2016-12-21 4 views
1

가 여기 내 JSON 요청입니다 루트 노드에서 노드를 원치 않는 JSON (하위)를 제거하기 경로의 "사진"?어떻게

답변

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 배열하지 {}.

+0

답변 해 주셔서 감사합니다. 위의 솔루션은 하나의 노드 만 제거하려는 경우 작동합니다. 여러 노드의 경우 하나의 노드를 제거한 후 jsonNode 및 jsonNode2에서 인덱스 값이 다르기 때문에 작동하지 않습니다. – user3123964

+0

답변을 업데이트했지만 시험하지는 않았지만 제대로 작동합니다. –