如何从根节点中删除不需要的json(子)节点

时间:2016-12-21 00:01:43

标签: json spring jackson objectmapper

这是我的json请求:

 <form onsubmit="return validateForm();">

在我的控制器中:

{
 {"op":"replace", "path":"/news", "value":"A"},
 {"op":"replace", "path":"/videos", "value":"B"},
 {"op":"replace", "path":"/photos", "value":"C"}
}

有人可以帮我解决如何删除路径中带有“照片”的节点吗?

1 个答案:

答案 0 :(得分:0)

有很多方法可以删除它。

一个是您可以在路径中存储带有“照片”的节点索引,而不是遍历所有索引和调用删除功能,我将在下面提到。

或者维护jsonnode的另一个副本,并在迭代原始副本时从该副本中删除元素。 所以它看起来像这样: -

JsonNode jsonNode = null;
    try {
          //patchJson is json string (above)
        jsonNode = new ObjectMapper().readTree(patchJson);
        *JsonNode jsonNode2 = jsonNode.deepCopy();*
        *int index = 0;*
        *int changedCount = 0;*
        for (JsonNode node : jsonNode) {
            String path = node.path("path").asText();
            if(path.equalsIgnoreCase("/photos"))
            {
              *((ArrayNode) jsonNode2).remove(index-changedCount);*
              *changedCount++;*
            }
            *index++;*
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

此外,您的JSON是一个数组,所以它应该以[]而不是{}开始。