2010-07-25 5 views
2

다음과 같은 json 출력이 있습니다.json 출력에서 ​​데이터를 검색하는 방법

{ 
    "38467": { 
     "name": "Tony Parker", 
     "book": [ 
     { 
      "title": { 
       "name": "MediaWorks" 
      }, 
     }, 
     ], 
    } 
    "59678": { 
     "name": "Ray Thomas", 
    } 
} 

사실 json 출력은 훨씬 더 큰 목록입니다. 하지만 저자 이름과 발행인 만 저장하고 싶습니다. 단일 모델에 대해 여러 개별 레코드를 저장하고 싶습니다.

jquery를 사용하여 입력 요소에 값을 지정하고 있습니다.

$('#Author' + i + 'Title').val(response...); 

하지만 작동하지 않습니다.

감사합니다.

감사합니다.

답변

2

JSON은 자바 스크립트 데이터 (자바 스크립트 개체)입니다. "디코드 된"JSON 데이터를 변수 (예 : var dat)에 할당하면 일반적인 객체/배열 멀리 멤버에게 액세스 할 수 있습니다. dat[38467]['name']Tony Parker입니다.

코멘트 업데이트 :

당신이 디코딩하면/데이터 저장, 당신은 그것을 통해 이동하기 위해 정기적 자바 스크립트 foreach 루프를 사용할 수 있습니다

는 JSON에 대한 마법 거기에 아무것도
for (var bookID in booklist) { 
    var author = booklist[bookID]['name']; 
    var title = booklist[bookID]['book'][0]['title']['name']; 
    // ...do stuff here... 
} 

, 그냥 자바 스크립트입니다 데이터는 쉽고 깨끗한 전송을 위해 포장됩니다. 물론 jQuery 또는 MooTools와 같은 프레임 워크를 사용한다면 자신의 .each() 연산자를 사용하는 것이 더 낫습니다. 그렇지 않으면 for() 루프에서 쓸데없는 여러 가지 단점이 있습니다.

편집 : marimuthu 님의 의견에 따른 고정 코드 샘플 (좋은 캐치, 감사합니다).

+0

루프를 통해 루프를 돌면서 변수를 제공합니다. 사과, 나는 컴퓨터 프로그래밍에 익숙하지 않다. 배울 점이 많다. –

+0

JQuery를 많이 사용하지만, 사용하지 않는 것이 하나 있다면 루프입니다. .each() 루프는 확장되지 않습니다! 어쨌든 좋은 정보 +1. – Anders

+1

'book'속성은 배열이므로 인덱스를 통해 액세스해야합니다. var title = booklist [book] [ 'book'] [0] [ 'title'] [ 'name']]; –

관련 문제