jackson 如何将JsonNode转换为ObjectNode

nmpmafwu  于 2022-11-08  发布在  其他
关注(0)|答案(5)|浏览(1253)

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

救命啊!2!

5w9g7ksd

5w9g7ksd1#

您可以使用以下简单方法将JsonNode转换为ObjectNode

ObjectNode objectNode = jsonNode.deepCopy();

可从Jackson2.0获得,并在Jackson 2.4.0中测试

w8f9ii69

w8f9ii692#

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

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

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

6bc51xsx

6bc51xsx3#

我也有这个错误,虽然在我的情况下,这是一个愚蠢的错误。我不小心导入了org.codehaus.jackson.node.ObjectNode而不是com.fasterxml.jackson.databind.node.ObjectNode。使用Jackson对象节点修复了isuse。

pgky5nke

pgky5nke4#

您可以通过以下方式将JsonNode转换为ObjectNode:

JsonNode demoPath = requestParams.at("/Subscription/0");
((ObjectNode) demoPath).put("mylID", "test12");
8fsztsew

8fsztsew5#

我试了几次,没问题!你只需要定义一个Student Class来Map属性。然后你就可以把jsonNode转换成Student对象了。
Student student = objectMapper.convertValue(jsonNode1, Student.class);
我想这个会适合你的需要!

相关问题