2013-06-25 4 views
1

복잡한 JSON 개체가있어서이 JSON을 방문하여 더 많은 속성을 추가하고 싶습니다.JavaScript로 복잡한 JSON을 여행하는 방법은 무엇입니까?

이것은 JSON 객체의 예입니다.

Object {root: Object} 
     root: Object 
      entity_children: Array[1] 
       0: Object 
        entity_children: Array[1] 
        0: Object 
         entity_children: Array[10] 
          0: Object 
          1: Object 
          2: Object 
          3: Object 
         entity_id: "00145E5BB2641EE284F811A7907757A3" 
         entity_name: "Functional Areas" 
         entity_type: "" 
    ..... 

그래서 기본적으로, 나는 재산 "ENTITY_ID", "ENTITY_NAME", "ENTITY_TYPE"와 "entity_children"을 가지고있는 JSON 객체를 가지고있다.

"entity_children"에는 내부 개체 목록이 포함될 수 있습니다. 어떻게이 모든 요소를 ​​통해 여행 할 수 있습니다. 나는 hasOwnProperty ('entity_children')를 이미 시도했지만 단 하나의 레벨을 통과했다.

내 원시 JSON

{"root": 
    {"entity_id":"00145E5BB8C21EE286A007464A64508C", 
    "entity_name":"TP_GTPAPI_TEST_BASE_ACC", 
    "entity_type":"", 
    "entity_children": 
      [{"entity_id":"00145E5BB8C21EE286A007464A66508C", 
      "entity_name":"TEST_CATALOG_GTPAPI", 
      "entity_type":"", 
      "entity_children": 
       [{"entity_id":"00145E5BB8C21EE286A007464A66708C", 
        "entity_name":"Functional Areas", 
        "entity_type":"", 
        "entity_children": 
         [{"entity_id":"00145E5BB8C21EE286A007464A66908C", 
       ...... 

이 도와주세요입니다.

+1

재귀 사용 http : //en.wikiped ia.org/wiki/Recursion – Tommi

+0

"JSON 개체의 예입니다." - 원시 JSON에 붙여 넣을 수 있습니까? 나는 당신이 표현한 것보다 더 읽기 쉬울 것이라고 생각한다. –

+0

자바 스크립트에서 루핑을 사용한다. – Hariharan

답변

0

올바르게 이해하면 동일한 유형의 개체 배열 인 개체가 개체에 포함되어있는 것입니다. 그것은 그것을 계층 적 객체로 만듭니다. 모든 객체를 적절하게 이동하려면 반복과 재귀가 모두 필요합니다. 반복 및 재귀가 모두있는 다음 코드를 살펴보십시오. VAR 데이터 = { 루트 { A : "1", B : "1", C "1" D : [{ A : "1.1" B "1.1" C "1.1" D : [{ A : "1.1.1" B "1.1.1" C "1.1.1" D :

   { 
        a: "1.1.1.1", 
        b: "1.1.1.1", 
        c: "1.1.1.1", 
        d: "1.1.1.1" 
       }] 


      }] 
     }, { 
      a: "1.2", 
      b: "1.2", 
      c: "1.2", 
      d: "1.2" 
     }, 

     ] 
    } 
}; 

function loop(obj) { 
    for (var i in obj) { 
     if (obj[i].d != null) { 
      loop(obj[i].d); 
      alert(obj[i].a); 
     } 
    } 
} 

function travel() { 
    loop(data.root.d); 
} 

JsFiddle

관련 문제