나는 이것이 쉽지는 않을 것이라고 생각했지만, 꽤 두통으로 바뀌고 있습니다. 내 웹 서버에서 반환되는 다차원 JSON 개체가 있습니다. 상당히 깊은 탐색 창을 만들기 위해 파싱 중입니다. 이 객체를 검색 할 수 있어야하지만, 그 수단을 찾기 위해 비어 있습니다.다차원 json 객체에서 검색
개체도록 구성된다 : 트리 -> 행 [] => 트리 -> 행 [] => 트리 ... 등
각각의 나무는 많은 행이있을 수 있으며, 각 행은 트리를 가질 수
행 수준에는 몇 가지 변수가 있습니다. 검색하고 값 하나를 찾아야합니다. EX : if(tree.rows[x].tree.rows[y].url =="http://stackoverflow.com" return true;
어려운 점은, 전체 개체를 트래버스하는 방법을 모르겠다는 것입니다. 비록 내가 재귀 적으로 할지라도 나는 어떻게 모든 열을 계속 오르 내릴 수 있는지 모른다.
다음은 객체의 예 :
var jsonLNav = {itemClassName:"NodeLink",linkClassName:"NodeLinkTitle",linkHideClassName:"HideFromProd",navCategoryClassName:"NavCategory",onLoadJS:"",tree:[{pos:1,wid:"263a97c2-7cb9-470c-bf86-cadc28ae1323",pid:"1",rows:[{hide:0,title:"More IT Help",isNC:0,isMig:0,url:"http://vm-hsspdv-d09p/en-us/Help/Pages/ITHelp.aspx",isOL:0,tree:{pos:2,wid:"263a97c2-7cb9-470c-bf86-cadc28ae1323",pid:"3"}},{hide:0,title:"Office 2010",isNC:0,isMig:1,url:"http://office2010.lmig.com/Pages/Default.aspx",isOL:0,tree:{pos:2,wid:"263a97c2-7cb9-470c-bf86-cadc28ae1323",pid:"9"}},{hide:0,title:"E-mail Management",isNC:0,isMig:0,url:"http://vm-hsspdv-d09p/en-us/Help/EmailManagement/Pages/default.aspx",isOL:0,tree:{pos:2,wid:"8be66348-8da1-4e5c-90c5-0930d2f52d1a",pid:"123"}},]}]};
이 예제 조각 행의 자식 나무가없는, 않는 개체가 긴 수만 문자이며, 필요한 경우 내가 게시 할 수 있습니다. 내가 생각할 수있는
가장 좋은 코드는이 (안 테스트, 개념적으로 내가 부족 일)에 가까운 것 :
function findURL(url)
{
alert(searchJson(jsonLNav.tree[0],url));
}//end findURL
function searchJson(tree,url)
{
for(var x=0; x<=tree.rows.length-1;x++)
{
if(url == tree.rows[x].url)
{
return tree.rows[x].title;
}//end if
else
{
searchJson(tree.rows[x].tree,url)
}//end else
}//end for
}//end searchJson
감사합니다!
매우 빠르게, 감사합니다. 나는 그것을 시도하고있다. 나는 for 루프를 사용하여 문제가 발생했다. 내 오류 : "tree.rows 정의되지 않았습니다." 목록의 끝에서 재귀 적 메서드를 호출하고 행이 없다고 생각합니다. 나는 다른 타입의 체크를 던지고있다. – kevingreen
@kevingreen 아마도 jsonLNav.tree [0] "이 아닌"jsonLNav.tree "로 함수를 호출해야 할 수도 있습니다 ... – Pointy
나는 완전히 확신 할 수없는 이유로 json 객체를 생성하면서 상위 트리를 참조합니다 다른 모든 트리는 그렇지 않습니다. 불행히도 저는 시스템 외부에서 작성된 코드를 다루므로, 그 이유를 파고 들지 못합니다. 유형이 제 테스트에서 작동하는 것 같습니다. 경우. – kevingreen