2015-09-22 206 views
9

我有一个com.fasterxml JsonNode对象与一些数据。我需要对其数据进行一些操作。我搜索了答案,但没有得到正确的答案。你能建议我如何操纵JsonNode数据。 我也试图JsonNode转换为ObjectNode如下如何将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 

请帮助!

+1

很可能您正尝试将ObjectNode的值转换为objectNode。 ObjectNode的意思是{“test”:“value”}并且你可能是类型值节点。如果您可以共享代码,可能会建议您应该投射哪个节点 – Optional

回答

13

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

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

,但我不知道这是很好的做法还是不? 如果还有比以上更好的,请告诉我。 谢谢!

12

您可以在这个简单的方式,将ObjectNode转换JsonNode

ObjectNode objectNode = jsonNode.deepCopy(); 

Available from Jackson 2.0与杰克逊2.4.0

-2

测试我尝试了一些时间,这将是确定!您只定义一个Student Class来映射属性。然后,您可以将jsonNode转换为Student对象。

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

我认为这将是适合您的需求!

+0

问题是如何在com.fasterxml.jackson.databind.node.ObjectNode中转换JsonNode,而不是在某个Object实例中 –

相关问题