2013-06-04 3 views
0

몇 단계 깊은 json을 만들려고하고 있는데 2 곳에서 문제가 있습니다. 첫 번째는 올바른 형식을 얻는 것입니다. 또한 "level_two"를 데이터 세트에 추가하려고합니다.jQuery를 사용하는 다중 레벨 JSON

둘째는 데이터를 구문 분석합니다. 어떤 도움이라도 대단히 감사하겠습니다.

감사합니다.

JSON: 
{ 
    "math_problems": [ 
     { 
      "level_one": { 
       "addition": { 
        "problem": { 
         "data_set": [ 
          3, 
          2 
         ] 
        }, 
        "problem": { 
         "data_set": [ 
          5, 
          1 
         ] 
        } 
       }, 
       "subtraction": { 
        "problem": { 
         "data_set": [ 
          4, 
          2 
         ] 
        } 
       }, 
       "division": { 
        "problem": { 
         "data_set": [ 
          3, 
          2 
         ] 
        } 
       }, 
       "multiplication": { 
        "problem": { 
         "data_set": [ 
          3, 
          2 
         ] 
        } 
       } 
      } 
     } 
    ] 
} 


jQuery: 

$.getJSON('/data/math.json', function(data) { 

     var the_data = []; 

     $.each(data,function(index,item) { 
      i = index; 
      number_one = item[0]['level_one']['addition']['problem']['data_set'][0]; 
      number_two = item[0]['level_one']['addition']['problem']['data_set'][1]; 

      the_data += number_one + " + " + number_two; 
     }); 

     $('<ul/>', { 
      'class': 'my-new-list', 
      html: the_data + " = " + (number_one + number_two) 
     }).appendTo('body'); 
    }); 
내가 꺼내 데이터를 분석 할 수 있도록하려면

말 :

level_one> 추가> 문제 1> 3, 2

level_two> 뺄셈> 문제 1> 4, 3

아이디어가 있으십니까?

답변

0

JSON이 javascript 객체로 변환되므로 "추가"에서 키 "문제"를 반복하면 두 번째 "문제"가 첫 번째를 덮어 씁니다. 경우에

"math_problems" : { 
    "level_one": { 
    "addition": { 
     "problems": [ 
     { 
      "data_set": [3,2] 
     }, 
     { 
      "data_set": [5,1] 
     } 
     ] 
    }, 
    "subtraction": ...  
    } 
} 

이나, 문제, 문제 유형과 수준 높은 동적 :

"math_problems" : {  
    "levels": [ 
    { 
     "name" : "Level one", 
     "problems": [ 
     { 
      "type" : "addition", 
      "data_set": [3,2] 
     }, 
     { 
      "type" : "addition", 
      "data_set": [5,1] 
     }, 
     { 
      "type" : "subtraction", 
      "data_set": [2,1] 
     } 
     ] 
    }, 
    { 
     "name" : "Level two", 
     "problems": [ 
     ... 
     ] 
    } 
    ] 
} 
+0

I 라인 2에 오류가 발생하고

당신은 당신의 JSON 구조, 어쩌면 같은 것을 다시 생각한다 : Uncaught SyntaxError : 예기치 않은 토큰 : –

+0

json을 사용하기 위해 jQuery 아약스를 사용하고 있다면 요청의 결과가 자바 스크립트 객체가 될 것입니다. 브라우저 콘솔에서 JSON을 확인하고 http://jsonlint.com/을 사용하여 JSON – cernunnos

+0

을 확인해 주셔서 감사합니다. 지금까지 도움을 주셔서 감사합니다. 사용하고있는 것이므로 아직 꽤 많이는 아닙니다 .. $. AJAX ({ dataType와 'JSON' URL '/data/math.json' 성공 : 함수 (대응) { 경보 (response.math_problems.levels.level.problems.dataset [0]); } }); –

1

그래서 올바른 JSON은 다음과 같습니다

var object = { 
    levelOne: { 
     // etc. 
    }, 
    levelTwo: { 
     // etc. 
    } 
} 

은 같은 것입니다 통과 후 JSON.parse()를 사용하여 작업이 완료 구문 분석과 :

object.level_one.prop.prop1; 
object.level_two.otherProp.otherProp2; 
2
문제가

, 당신은 해시에 정의 된 동일한 키를 가지고 동일한 레벨에서 :

"problem": { 
    "data_set": [ 
     3, 
     2 
    ] 
}, 
"problem": { 
    "data_set": [ 
     5, 
     1 
    ] 
} 

이러한 것들은 서로 충돌하고 덮어 씁니다. 그것을 배열로 재구성하면 좋을 것입니다.

관련 문제