2012-11-10 3 views
1

의 특정 키에 대한 검색 : 나는 각 항목의 ID의 값을 반환 할나는 현재 다음과 같은 형태 JSON 개체를 반복하기 위해 노력하고있어 JSON 개체

"coupons":{ 
    "item1":{ 
     "id":"155", 
     "name":"First Item", 
     "value":-5199.6 
    }, 
    "item2":{ 
     "id":"255", 
     "name":"Second Item", 
     "value":-424.91 
    } 
} 

. 이것을 어떻게 할 수 있습니까?

JS에서 프로그래밍 중입니다.

감사합니다.

+1


왜와 객체를 사용하는'item1','item2' 등? 대신 배열을 사용해야합니다. '{ "id": "255", ...}}}'그럼'data.coupons.map (function (obj) {return obj.id;});' –

답변

0
var obj = { 'json...' }; 

for (var key in obj) 
{ 
    var item = obj[key]; 
    alert("id is " + item.id); 
} 

당신은 속성을 반복 할 var .. in obj 구문을 사용할 수있다 (또는 연관 인덱스; 똑같은 JS에서) 임의의 개체. 배열과 같은 일부 객체는 반복되는 반복을 방지하려는 다른 속성을 가지고 있기 때문에 반복되는 객체에 대해 항상주의해야합니다.

0

coupons[k] 항목 될 것입니다 그리고 당신은 사용하여 ID를 얻을 수 있습니다 coupons[k].id

var coupons = { 
    "item1":{ 
     "id":"155", 
     "name":"First Item", 
     "value":-5199.6 
    }, 
    "item2":{ 
     "id":"255", 
     "name":"Second Item", 
     "value":-424.91 
    } 
} 

for(var k in coupons){ 
     console.log(coupons[k].id); 

} 
1
var coupons = { 
    "item1":{ 
     "id":"155", 
     "name":"First Item", 
     "value":-5199.6 
    }, 
    "item2":{ 
     "id":"255", 
     "name":"Second Item", 
     "value":-424.91 
    } 
} 

var ids = []; 
for(var item in coupons) { 
    ids.push(coupons[item]['id']); 
} 

console.log(ids); 
0

내가 좋아하는 뭔가를 제안 :

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
<script> 
var dataset = { 
       "coupons":{ 
        "item1":{ 
         "id":"155", 
         "name":"First Item", 
         "value":-5199.6 
        }, 
        "item2":{ 
         "id":"255", 
         "name":"Second Item", 
         "value":-424.91 
        } 
       } 
      } 

$(document).ready(function(){ 

    $.each(dataset.coupons, function(i, item) { 
     $("#data").append('<p>' + item.id + '</p>'); 
     $("#data").append('<p>' + item.name + '</p>'); 
     $("#data").append('<p>' + item.value + '</p>'); } 
    ); 

}); 

</script> 
<div id="contentC"></div> 
0

당신은 할 수 있습니다 DefiantJS (http://defiantjs.com)를 사용할 수 있습니다 XPath 쿼리를 사용하여 JSON 구조를 검색하는 방법 이 lib는 "search"메소드로 전역 객체 JSON을 확장하고 일치하는 배열을 반환합니다 (빈 배열, 일치하는 항목이없는 경우).

XPath는 표준화 된 쿼리 언어이며 매우 쉽게 파악할 수 있습니다. 다음은 예제가있는 테스트 도구입니다. http://defiantjs.com/#xpath_evaluator

이 작동하는 피들을 확인하십시오. http://jsfiddle.net/hbi99/Yc6cc/

var data = { 
    ... 
}, 
res = JSON.search(data, '//*[id]'), 
str = ''; 

for (var i=0; i<res.length; i++) { 
    str += res[i].id +' : '+ res[i].name +'<br/>'; 
} 

document.getElementById('output').innerHTML = str; 
관련 문제