如何在 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 对象
Java Jackson将JSON序列化为HashTable