在JQuery中解析JSON Map

时间:2012-12-26 19:15:30

标签: jquery json

我有以下地图,其中每个键都是一个地图,其值列为以下json:

{
  "key": {
    "source": ["element1", "element2"],
    "target": ["element1", "element2"]
  },
  "key2": {
    "source": ["element1"],
    "target": ["element1"]
  }
}​

我想做以下事情:

  1. 获取将返回地图的密钥(get(“key2”))

  2. 查看此地图中的每个键(来源和目标)

  3. 迭代结果列表中的每个项目(element1,element2)

  4. 我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:5)

使用jQuery的.each()循环遍历key2项。

var obj = $.parseJSON(yourJSONString);

$.each(obj["key2"], function(key, value){
    console.log(key); // <-- source, target
    $.each(value, function(arrKey, arrValue){
        console.log(arrValue); // <-- element1, element2 etc etc
    });
});

如果您不想指定key2作为目标,并且想要遍历所有外部对象,那么:

$.each(obj, function(outerKey, outerValue){
    console.log(outerKey); // <-- key, key2
    $.each(outerValue, function(key, value){
        console.log(key); // <-- source, target
        $.each(value, function(arrKey, arrValue){
            console.log(arrValue); // <-- element1, element2 etc etc
        });
    });
});

通过使用原生JSON.parse()和嵌套的vanilla for(var=0; i<something.length; i++)循环,您也可以在没有jQuery的情况下实现相同的目标。

答案 1 :(得分:0)

var o = {
  "key": {
    "source": ["element1", "element2"],
    "target": ["element1", "element2"]
  },
  "key2": {
    "source": ["element1"],
    "target": ["element1"]
  }
}​
var key = o.key2;
for(p in key)
{
 elementArray = key[p];
 for(var i=0;i<elementArray.length;i++)
 {
   //access element 1 and 2 here
 }
}

答案 2 :(得分:0)

不确定这是否是您所需要的,但它应该引导您走上正确的道路:

var things = {
  "key": {
    "source": ["element1", "element2"],
    "target": ["element1", "element2"]
  },
  "key2": {
    "source": ["element1"],
    "target": ["element1"]
  }
};

var get = function( key ) {
    var output = '';

    for( thisKey in things ) {
        if( thisKey === key ) {
            var myThing = things[ key ];

            for( thingKey in myThing ) {
                output += thingKey + ': ' + myThing[thingKey].join(', ') + '<br />';
            }

            return output;
        }
    }
}

document.write( get( 'key' ));
document.write('<hr />');
document.write( get( 'key2' ));

演示:http://jsfiddle.net/RucB3/