如何解析动态json数据?

时间:2014-04-10 06:12:21

标签: javascript json

我正在使用wikipedia API我的json响应,

"{
    "query": {
        "normalized": [
            {
                "from": "bitcoin",
                "to": "Bitcoin"
            }
        ],
        "pages": {
            "28249265": {
                "pageid": 28249265,
                "ns": 0,
                "title": "Bitcoin",
                "extract": "<p><b>Bitcoin</b>isapeer-to-peerpaymentsystemintroducedasopensourcesoftwarein2009.Thedigitalcurrencycreatedandlikeacentralbank,
andthishasledtheUSTreasurytocallbitcoinadecentralizedcurrency....</p>"
            }
        }
    }
}"

此响应来自XMLHTTPObject(request.responseText

我正在使用eval将上面的字符串转换为json对象,如下所示,

var jsonObject = eval('(' +req.responseText+ ')');

在响应中,pages元素将具有键值对的动态数字,如上例所示(“28249265”)

如果我的pageId对于不同的结果不同,我怎样才能从上面的json对象中获取extract元素。

请注意,此处解析不是实际问题,

如果解析它,我可以提取,

var data = jsonObject.query.pages.28249265.extract;

在上面的第28249265行是动态的,这对于不同的查询

会有所不同

2 个答案:

答案 0 :(得分:1)

假设你想遍历&#34; jsonObject.query.pages&#34;中的所有键。 你可以像这样提取它:

var pages = jsonObject.query.pages;
for (k in pages) { // here k represents the page no i.e. 28249265
    var data = pages[k].extract;
    // what u wana do with data here
}

或者您可以首先提取数组中的所有页面数据。

var datas = [];
var pages = jsonObject.query.pages;
for (k in pages) {
    datas.push(pages[k].extract);
}
// what u wana do with data array here

答案 1 :(得分:0)

您可以使用两种方法将其归档

obj = JSON.parse(json)

OR

obj = $.parseJSON(json);

<强>更新

试试这个

var obj = JSON.parse("your json data string");

//console.log(obj)

jQuery.each(obj.query.pages,function(a,val){
// here you can get data dynamically
  var data = val.extract;
  alert(val.extract);

});

JSBIN示例 JSBIN