我正在尝试输出Jackson JSON中的JSON对象。但是,我无法使用以下代码获取JSON对象。
public class MyClass {
private ObjectNode jsonObj;
public ObjectNode getJson() {
ObjectMapper mapper = new ObjectMapper();
// some code to generate the Object user...
mapper.writeValue(new File("result.json"), user);
jsonObj = mapper.createObjectNode();
return jsonObj;
}
}
程序运行后,文件result.json
包含正确的JSON数据。但是,jsonObj
为空(jsonObj={}
)。我查找了ObjectMapper的Javadoc,但找不到写入ObjectNode
(Jackson中的JSON对象)的简单方法。 ObjectMapper
中没有类似以下内容的方法:
public void writeValue(ObjectNode json, Object value)
如何直接从ObjectNode
写信给ObjectMapper
?
答案 0 :(得分:22)
您需要改为使用ObjectMapper#valueToTree()。
这将构造等效的JSON树表示。功能相同,就像将值序列化为JSON并将JSON解析为树一样,但效率更高。
如果不需要,则无需将User
对象写入JSON文件。
public class MyClass {
private ObjectNode jsonObj;
public ObjectNode getJson() {
ObjectMapper mapper = new ObjectMapper();
// some code to generate the Object user...
JsonNode jsonNode = mapper.valueToTree(user);
if (jsonNode.isObject()) {
jsonObj = (ObjectNode) jsonNode;
return jsonObj;
}
return null;
}
}