如何在 Jackson 中将对象序列化为 ObjectNode 的值?

Posted

技术标签:

【中文标题】如何在 Jackson 中将对象序列化为 ObjectNode 的值?【英文标题】:How serialize an object as a value to ObjectNode in Jackson? 【发布时间】:2015-03-03 06:33:19 【问题描述】:

我正在使用jackson 将我的对象序列化为 json。我正在使用以下代码:

ObjectMapper mapper = new ObjectMapper();
JsonNodeFactory nodeFactory = new JsonNodeFactory(false);
ObjectNode resNode = new ObjectNode(nodeFactory);

SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(ApplicationVersion.class, new SingleApplicationSerializer());
mapper.registerModule(simpleModule);
JsonNode appObject = mapper.valueToTree(appVersion);

resNode.put("status", true);
resNode.put("appObject", appObject);     //This put method is deprecated.

但是我看到JsonNode 重载的put 方法已被弃用。为什么不推荐使用put 方法的以下重载:

public JsonNode put(String fieldName, JsonNode value);

有什么替代方法?


我也试过这个:

String jsonStr = mapper.writeValueAsString(appVersion);
resNode.put("status", true);
resNode.put("appObject", jsonStr);

但此方法将双引号 (") 放在 appObject 值周围作为字符串值。

【问题讨论】:

Javadoc 声明您应该使用set(String,JsonNode)replace(String,JsonNode)。你试过这些吗? @user3567830:谢谢 :) 我没看到。我现在找到了。 Documentation Link。再次感谢:) 【参考方案1】:

他们为这些操作添加了一种新方法。 ObjectNode.put(String, JsonNode)

改用resNode.set("appObject", appObject);

【讨论】:

以上是关于如何在 Jackson 中将对象序列化为 ObjectNode 的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Jackson 将原始 JSON 反序列化为 Java 对象

Jackson - 将内部对象列表反序列化为更高级别的列表

如何在 Ruby 中将对象序列化为 json

Java Jackson将JSON序列化为HashTable

使用 Jackson 将通用 java 对象序列化为 JSON

无法使用 Jackson ObjectMapper 将 Json 序列化为 Java 对象