如何从根节点中删除不需要的JSON(sub)节点



这是我的JSON请求:

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

在我的控制器中:

JsonNode jsonNode = null;
    try {
          //patchJson is json string (above)
        jsonNode = new ObjectMapper().readTree(patchJson);
        for (JsonNode node : jsonNode) {
            String path = node.path("path").asText();
            if(path.equalsIgnoreCase("/photos"))
            {
              //How to remove this node from root node(jsonNode)
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    Patch patch = new JsonPatchMaker().fromJsonNode(jsonNode);

有人可以帮助我如何用路径中的"照片"删除节点?

有很多方法可以删除它。

一个是您可以在路径中存储带有"照片"的节点索引,而不是在所有索引上迭代并调用我下面提到的删除函数。


或在通过原始副本进行迭代时,将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也是一个数组,因此应该以[]而不是{}开始。

最新更新