我有一个带有一些数据的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
请帮助!!
答案 0 :(得分:22)
您可以通过以下简单方式转换JsonNode
中的ObjectNode
:
ObjectNode objectNode = jsonNode.deepCopy();
Available from Jackson 2.0并使用Jackson 2.4.0测试
答案 1 :(得分:21)
最后,我得到了如下解决方案......
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());
但我不知道这是不是好方法? 如果有更好的,请告诉我。 谢谢!
答案 2 :(得分:2)
我也有这个错误,尽管对我而言这是一个愚蠢的错误。
我不小心导入了org.codehaus.jackson.node.ObjectNode
而不是com.fasterxml.jackson.databind.node.ObjectNode
。
使用杰克逊ObjectNode修复了issuse。
答案 3 :(得分:-2)
我尝试了几次,一切都会好的!您只需定义Student Class
来映射属性。然后,您可以将jsonNode
转换为Student
对象。
Student student = objectMapper.convertValue(jsonNode1, Student.class);
我认为这将适合您的需要!