如何将JsonNode转换为ObjectNode

时间:2015-09-22 09:19:34

标签: java json

我有一个带有一些数据的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

请帮助!!

4 个答案:

答案 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);

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