2010-08-04 6 views
2

데이터를 읽는 json 판독기를 작성했습니다. &은 아래 데이터와 잘 작동합니다. JSON가javascript/jquery를 사용하여 json에서 단일 객체 및 객체 배열을 읽는 방법

{"menu": { 
    "id": "file", 
    "value": "File", 
    "popup": { 
    "menuitem": 
     {"value": "Close", "onclick": "CloseDoc()"} 

    } 
}} 

같은 API 중 하나의 메뉴 아이템을 리턴 할 때

{"menu": { 
    "id": "file", 
    "value": "File", 
    "popup": { 
    "menuitem": [ 
     {"value": "New", "onclick": "CreateNewDoc()"}, 
     {"value": "Open", "onclick": "OpenDoc()"}, 
     {"value": "Close", "onclick": "CloseDoc()"} 
    ] 
    } 
}} 

는하지만 메뉴 항목 객체 대신 배열된다. 그래서, json 독자가 반복하여 menuitem의 배열을 읽었을 때 읽을 수 없습니다.

해결책은 크게 감사하겠습니다. 다른 주요 사이트에서 어떻게 처리합니까?

+0

json을 읽기 전에 menuitem 배열을 검사 할 수 있습니까? 배열로 변환 할 수 없습니까? 빠른 방법으로 변환하는 방법을 제안하십시오. 미리 감사드립니다! – jaan

+0

파서를 독자로 바꾼다 – jaan

답변

1

jQuery의 makeArray이 이상적입니다.
http://api.jquery.com/jQuery.makeArray/

이 무엇을하고 배열을 반환, 그래서있는 그대로 그것을 전달 배열은 이미하지만 스칼라의 경우는 그것의 단일 값 배열을 취하면됩니다. 그런 다음 결과를 반복 할 수 있습니다. 이 메뉴 항목의 '가치'를 읽고 싶은 가정

+0

나는이 정확한 대답을 전에 게시했기 때문에이 질문이 중복 된 것으로 확신한다. – jpsimons

+0

죄송합니다. 확실하지 않습니다. js array "push"를 사용하여 객체를 배열로 변환했습니다. – jaan

0

, 당신은

if(menuitem.value!=undefined)//this will return undefined if the menu item is an array 

그런 다음 다른 점은 위의 조건이 거짓 인 경우 menuitem[0].value를 사용하는 것입니다 사용할 수 있습니다. 이것이 어느 정도 문제를 해결하기를 바랍니다.

관련 문제