如何将JsonNode转换为ObjectNode

Mr.*_*ddy 18 java json

我有一个com.fasterxml JsonNode带有一些数据的对象.我需要对其数据进行一些操作.我用谷歌搜索答案,但没有得到正确的答案.你能告诉我如何操作JsonNode数据吗?我也试图转换JsonNodeObjectNode如下

ObjectNode objectNode = (ObjectNode)filterJson;
Run Code Online (Sandbox Code Playgroud)

但它给予以下例外....

java.lang.ClassCastException: com.fasterxml.jackson.databind.node.TextNode cannot be cast to 
com.fasterxml.jackson.databind.node.ObjectNode
Run Code Online (Sandbox Code Playgroud)

请帮忙!!

Dan*_*tra 27

您可以转换JsonNodeObjectNode以这种简单的方式:

ObjectNode objectNode = jsonNode.deepCopy();
Run Code Online (Sandbox Code Playgroud)

可从Jackson 2.0获得,并使用Jackson 2.4.0进行测试


Mr.*_*ddy 23

最后,我得到了如下解决方案......

JsonNode jsonNode = Json.toJson("Json String");
ObjectNode node = (ObjectNode) new ObjectMapper().readTree(jsonNode.asText());
//perform operations on node
jsonNode = (JsonNode) new ObjectMapper().readTree(node.toString());
Run Code Online (Sandbox Code Playgroud)

或另一个如下......

ObjectNode node = (ObjectNode) new ObjectMapper().readTree("Json String")
//perform operations on node
jsonNode = (JsonNode) new ObjectMapper().readTree(node.toString());
Run Code Online (Sandbox Code Playgroud)

但我不知道这是不是好方法?如果有更好的,请告诉我.谢谢!

  • 我认为您应该调用JsonNode.isObject()以确保可以在投射之前进行投射。 (2认同)

doz*_*zer 5

我也遇到了这个错误,尽管就我而言这是一个愚蠢的错误。我不小心导入了org.codehaus.jackson.node.ObjectNode而不是com.fasterxml.jackson.databind.node.ObjectNode. 使用 Jackson ObjectNode 解决了这个问题。