在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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章