1
가 여기 내 JSON 요청입니다 루트 노드에서 노드를 원치 않는 JSON (하위)를 제거하기 경로의 "사진"?어떻게
가 여기 내 JSON 요청입니다 루트 노드에서 노드를 원치 않는 JSON (하위)를 제거하기 경로의 "사진"?어떻게
제거 방법에는 여러 가지가 있습니다.
하나는 경로에 "사진"이있는 노드의 색인을 저장할 수 있으며 아래에서 언급 한 모든 색인 및 통화 제거 기능을 반복하는 것입니다.
또는 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 배열하지 {}.
답변 해 주셔서 감사합니다. 위의 솔루션은 하나의 노드 만 제거하려는 경우 작동합니다. 여러 노드의 경우 하나의 노드를 제거한 후 jsonNode 및 jsonNode2에서 인덱스 값이 다르기 때문에 작동하지 않습니다. – user3123964
답변을 업데이트했지만 시험하지는 않았지만 제대로 작동합니다. –