将Java对象转换为Jackson中的JsonNode

210

能否直接将Java对象转换为JsonNode对象?

我找到的唯一解决方法是将Java对象转换为字符串,然后再转换为JsonNode:

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

这个问题可能会有帮助:https://dev59.com/TnA65IYBdhLWcg3wvxaE。 - Leri
很遗憾,不行。我不想创建一个JSON字符串。我想直接将Java对象转换为JsonNode对象。 - Max Schmidt
1个回答

395

1
看起来ObjectMapper.valueToTree直到Jackson 1.6才被添加,所以对于那些尚未升级的人来说,这个替代方案非常好! - Steve Onorato
1
有趣的是,valueToTree 的实现方式类似于 write 和 read:https://github.com/FasterXML/jackson-databind/blob/master/src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java#L2542 :D - ortemij
知道另一种方法也是有用的:也有一个treeToValue方法。 - Jilles van Gurp
4
你也可以使用 ObjectNode node = mapper.convertValue(myObject, ObjectNode.class) 直接转换为 ObjectNode。 - Ares
我正试图将一个Java类转换为JsonNode。但是出现了嵌套异常java.lang.IllegalArgumentException: Not an array .... ObjectMapper mapper = new ObjectMapper(); JsonNode jsonInput = mapper.convertValue(myJavaClass, JsonNode.class); 使用的是Jackson-databind-2.11.0版本。 - sashikanta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接