如何将 JsonNode 转换为 ObjectNode

How to convert JsonNode to ObjectNode

我有一个包含一些数据的 com.fasterxml JsonNode 对象。我需要对其数据进行一些操作。我在谷歌上搜索了答案,但没有得到正确的答案。你能建议我如何操作 JsonNode 数据吗? 我还尝试将 JsonNode 转换为 ObjectNode 如下

ObjectNode objectNode = (ObjectNode)filterJson;

但它给出了以下异常....

java.lang.ClassCastException: com.fasterxml.jackson.databind.node.TextNode cannot be cast to 
com.fasterxml.jackson.databind.node.ObjectNode

请帮忙!!

最后得到如下解决方案...

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());

或下面的另一个...

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

但我不知道这是否是个好方法? 如果有比上面更好的,请告诉我。 谢谢!

您可以通过这种简单的方式将 JsonNode 转换为 ObjectNode

ObjectNode objectNode = jsonNode.deepCopy();

Available from Jackson 2.0 并使用 Jackson 2.4.0

进行测试

我试了几次,会好的!您只定义一个 Student Class 来映射属性。然后你可以将 jsonNode 转换为 Student 对象。

Student student = objectMapper.convertValue(jsonNode1, Student.class);

我认为这将适合您的需要!

我也遇到了这个错误,尽管在我的情况下这是一个愚蠢的错误。 我不小心导入了 org.codehaus.jackson.node.ObjectNode 而不是 com.fasterxml.jackson.databind.node.ObjectNode。 使用 jackson ObjectNode 修复了问题。