首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何读取复杂的嵌套json数据

如何读取复杂的嵌套json数据
EN

Stack Overflow用户
提问于 2016-07-18 07:11:28
回答 2查看 205关注 0票数 0

我的问题是,如何使用javascript读取特定形式的json数据,例如,如果我有这一种,在我看来是很难下注的,所以你能帮我解决这个问题。

代码语言:javascript
复制
{
  "jQRReponse": [
    [
      {
        "sujet": "RHONE ALPES",
        "verbe": "est_le_nom_de_la_region",
        "complement": {
          "sujet": "82",
          "verbe": "est_la_region_du_dept",
          "complement": {
            "sujet": "01",
            "verbe": "est_le_numero_du_dept",
            "complement": {
              "sujet": "Ain",
              "verbe": "contient_les_resultats_de_depAnn",
              "complement": {
                "sujet": "Ain2014",
                "verbe": "Pop_results_Ens_Total",
                "complement": "626794"
              }
            }
          }
        }
      }
    ],
    [
      {
        "sujet": "RHONE-ALPES",
        "verbe": "est_le_nom_de_la_region",
        "complement": {
          "sujet": "82",
          "verbe": "est_la_region_du_dept",
          "complement": {
            "sujet": "01",
            "verbe": "est_le_numero_du_dept",
            "complement": {
              "sujet": "Ain",
              "verbe": "contient_les_resultats_de_depAnn",
              "complement": {
                "sujet": "Ain2014",
                "verbe": "Pop_results_Ens_Total",
                "complement": "626794"
              }
            }
          }
        }
      }
    ]
  ]
}

如果我有这个表格:

代码语言:javascript
复制
data : [{
toto:5,
mama:10
},
{
toto:99,
mama:10
},
{
toto:88,
mama:10
}]

我将在我喜欢的索引处读取toto值:data[i].toto

那我怎么才能做第一个呢?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-18 07:33:51

您可以对所有数据进行迭代并获得结果。

访问的形式如下

代码语言:javascript
复制
data.jQRReponse[0][0].complement.complement.sujet
// returns "01"

代码语言:javascript
复制
function read(o) {
    Object.keys(o).forEach(function (k) {
        if (o[k] !== null && typeof o[k] === 'object') {
            console.log(k + ' -->');
            read(o[k]);
            return;
        }
        console.log(k + ': ' + o[k]);
    });
}

var data = { "jQRReponse": [[{ "sujet": "RHONE ALPES", "verbe": "est_le_nom_de_la_region", "complement": { "sujet": "82", "verbe": "est_la_region_du_dept", "complement": { "sujet": "01", "verbe": "est_le_numero_du_dept", "complement": { "sujet": "Ain", "verbe": "contient_les_resultats_de_depAnn", "complement": { "sujet": "Ain2014", "verbe": "Pop_results_Ens_Total", "complement": "626794" } } } } }], [{ "sujet": "RHONE-ALPES", "verbe": "est_le_nom_de_la_region", "complement": { "sujet": "82", "verbe": "est_la_region_du_dept", "complement": { "sujet": "01", "verbe": "est_le_numero_du_dept", "complement": { "sujet": "Ain", "verbe": "contient_les_resultats_de_depAnn", "complement": { "sujet": "Ain2014", "verbe": "Pop_results_Ens_Total", "complement": "626794" } } } } }]] };

read(data, []);

票数 1
EN

Stack Overflow用户

发布于 2016-07-18 07:33:16

如果您知道元素、深度和键,就可以访问这个嵌套json对象的特定部分。

如果元素为0,深度为2,键为verbe,则可以这样做:

代码语言:javascript
复制
nestedObj[0].complement.complement.complement.verbe

如果您的要求是遍历整个对象并找到所需的东西,则可以对每个元素使用递归函数。

代码语言:javascript
复制
function traverse_it(obj){

    for(var prop in obj){

        console.log(obj[prop]);            //Or whatever you want to do with this level

        if(typeof obj[prop]=='object'){
           traverse_it(obj[prop[i]]);      //Function goes to the next level here

        }
    }
}

traverse_it(nestedObj);

Here很有洞察力

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38430562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档