在Jackson中将Java对象转换为JsonNode [重复]

Posted

技术标签:

【中文标题】在Jackson中将Java对象转换为JsonNode [重复]【英文标题】:Convert Java Object to JsonNode in Jackson [duplicate] 【发布时间】:2012-08-03 10:18:05 【问题描述】:

是否可以直接将 Java Object 转换为 JsonNode-Object?

我发现解决这个问题的唯一方法是将 Java 对象转换为字符串,然后再转换为 JsonNode:

ObjectMapper mapper = new ObjectMapper(); 
String json = mapper.writeValueAsString(object);
JsonNode jsonNode = mapper.readTree(json);

【问题讨论】:

This question 可能会有所帮助。 @PLB 不幸的是没有。我不想创建 JSON 字符串。我想直接将 Java-Object 转换为 JsonNode-Object 【参考方案1】:

从 Jackson 1.6 开始,您可以使用:

JsonNode node = mapper.valueToTree(map);

JsonNode node = mapper.convertValue(object, JsonNode.class);

来源:is there a way to serialize pojo's directly to treemodel?

【讨论】:

似乎 ObjectMapper.valueToTree 直到 Jackson 1.6 才添加,因此对于我们这些尚未升级的人来说,替代方案非常棒! 很有趣的是 valueToTree 的实现就像 write 和 read 一样:github.com/FasterXML/jackson-databind/blob/master/src/main/java/… :D 知道另一种方法也是可能的:还有一个 treeToValue 方法。 也可以使用ObjectNode node = mapper.convertValue(myObject, ObjectNode.class)直接转换成ObjectNode 我正在尝试将 java 类转换为 JsonNode。但是获取嵌套异常是 java.lang.IllegalArgumentException: Not an array .... ObjectMapper mapper = new ObjectMapper(); JsonNode jsonInput = mapper.convertValue(myJavaClass, JsonNode.class);使用 Jackson-databind-2.11.0

以上是关于在Jackson中将Java对象转换为JsonNode [重复]的主要内容,如果未能解决你的问题,请参考以下文章

json字符串怎么转换为java对象?

java 怎么将对象转换成json字符串

JackSon将java对象转换为JSON字符串

使用 Jackson 将 Java 对象转换为 JSON

使用jackson将pojo(对象列表)转换为java中的json

Java - 使用jackson将json转换为复杂对象