gpt4 book ai didi

java - 让 jackson 序列化apache commons Pair

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:11:13 29 4
gpt4 key购买 nike

如果可能的话,我如何才能让 jackson 以正确的方式同时序列化我的左对象和右对象? .因此,例如我必须遵循以下代码:

 public class MyPairTest {

public static void main(String[] args) {
Address address1 = new Address("Axel Street 1", "London");
Address address2 = new Address("Axel Street 2", "Copenhagen");

Map<String, Pair> map = new HashMap<>();
map.put("Address", Pair.of(address1, address2));

Pair p = Pair.of(address1, address2);

ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
try {
String serializeMapWithPair = mapper.writeValueAsString(map);
String serializePair = mapper.writeValueAsString(p);
System.out.println(serializeMapWithPair);
System.out.println(serializePair);
} catch (JsonProcessingException e) {
e.printStackTrace();
}

Gson gson = new Gson();
System.out.println(gson.toJson(p));
}
}

结果输出是:

{
"Address" : {
"com.example.api.beans.Address@224edc67" : {
"street" : "Axel Street 2",
"city" : "Copenhagen"
}
}
}
{
"com.example.api.beans.Address@224edc67" : {
"street" : "Axel Street 2",
"city" : "Copenhagen"
}
}
{"left":{"street":"Axel Street 1","city":"London"},"right":{"street":"Axel Street 2","city":"Copenhagen"}}

因此,前两个输出是使用 jackson ObjectMapper 序列化 Pair,而最后一个是使用 Gson,我想实现 Gson 示例中的结果,但使用 jackson 而没有 部分。我从 this jira improvement suggestion 得到的 Gson 例子我知道他们声明了以下 “Commons-lang 没有依赖关系,因此不能使用 Jackson 或任何类似的东西。” 但是想知道 Jackson 是否自己制作了序列化器或类似的东西,在那里找不到类似的东西,所以 jackson 可能没有简单的解决方案?或者我应该放弃它并使用 Gson,然后手动操作并删除 leftright 部分?

最佳答案

您可以编写自定义序列化程序:

private static final class PairSerializer extends JsonSerializer<Pair> {

@Override
public void serialize(Pair value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeStartObject();
gen.writeObjectField("left", value.getLeft());
gen.writeObjectField("right", value.getRight());
gen.writeEndObject();
}

}

并用你的 ObjectMapper 注册它:

mapper.registerModule(new SimpleModule().addSerializer(Pair.class, new PairSerializer()));

关于java - 让 jackson 序列化apache commons Pair,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44905502/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com