这是我的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也是一个数组,因此应该以[]而不是{}开始。