【问题标题】:How to parse dynamic json data?如何解析动态json数据?
【发布时间】:2014-05-23 16:19:45
【问题描述】:

我正在使用维基百科 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+ ')');

在响应中,页面元素将具有键值对的动态编号,如上例所示(“28249265”)

如果我的 pageId 因不同的结果而不同,我如何从上面的 json 对象中获取提取元素。

请注意,这里的解析不是实际问题,

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

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

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

【问题讨论】:

标签: javascript json


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以使用两种方法进行归档

    obj = JSON.parse(json)
    

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-23
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 2015-07-25
      • 1970-01-01
      相关资源
      最近更新 更多