繁体   English   中英

如何显示JSON字符串中的特定数据?

[英]How to display specific data from JSON string?

我正在从Google Spreadsheet URL检索JSON格式的数据,如下所示。 到JSON文件的替代链接 。)我只想解析它并显示基础数据。 考虑到我想要的所有数据都用相同的标签v标识,我该如何实现?

google.visualization.Query.setResponse({
   "version":"0.6",
   "reqId":"0",
   "status":"ok",
   "sig":"1326357147",
   "table":{
      "cols":[
         {
            "id":"A",
            "label":"Ref",
            "type":"number",
            "pattern":"General"
         },
         {
            "id":"B",
            "label":"ÃÂrea",
            "type":"string"
         },
         {
            "id":"C",
            "label":"Curso",
            "type":"string"
         }
      ],
      "rows":[
         {
            "c":[
               {
                  "v":1.0,
                  "f":"1"
               },
               {
                  "v":"Diseño"
               },
               {
                  "v":"Flash CS4 básico"
               }
            ]
         },
         {
            "c":[
               {
                  "v":2.0,
                  "f":"2"
               },
               {
                  "v":"Diseño"
               },
               {
                  "v":"Freehand MX "
               }
            ]
         },
         {
            "c":[
               {
                  "v":3.0,
                  "f":"3"
               },
               {
                  "v":"Diseño"
               },
               {
                  "v":"Illustrator CS5"
               }
            ]
         },
         {
            "c":[
               {
                  "v":4.0,
                  "f":"4"
               },
               {
                  "v":"Diseño"
               },
               {
                  "v":"Photoshop CS4 avanzado"
               }
            ]
         },
         {
            "c":[
               {
                  "v":5.0,
                  "f":"5"
               },
               {
                  "v":"Informática"
               },
               {
                  "v":"Word"
               }
            ]
         },
         {
            "c":[
               {
                  "v":6.0,
                  "f":"6"
               },
               {
                  "v":"Informática"
               },
               {
                  "v":"Excel"
               }
            ]
         },
         {
            "c":[
               {
                  "v":7.0,
                  "f":"7"
               },
               {
                  "v":"Informática"
               },
               {
                  "v":"Access"
               }
            ]
         },
         {
            "c":[
               {
                  "v":8.0,
                  "f":"8"
               },
               {
                  "v":"Informática"
               },
               {
                  "v":"Outlook "
               }
            ]
         },
         {
            "c":[
               {
                  "v":9.0,
                  "f":"9"
               },
               {
                  "v":"Informática"
               },
               {
                  "v":"Powerpoint "
               }
            ]
         },
         {
            "c":[
               {
                  "v":10.0,
                  "f":"10"
               },
               {
                  "v":"Informática"
               },
               {
                  "v":"Office 2007"
               }
            ]
         },
         {
            "c":[
               {
                  "v":11.0,
                  "f":"11"
               },
               {
                  "v":"NNTT Pymes"
               },
               {
                  "v":"Comercio Electrónico"
               }
            ]
         },
         {
            "c":[
               {
                  "v":12.0,
                  "f":"12"
               },
               {
                  "v":"NNTT Pymes"
               },
               {
                  "v":"Estrategias implant. NNTT para pymes"
               }
            ]
         },
         {
            "c":[
               {
                  "v":13.0,
                  "f":"13"
               },
               {
                  "v":"NNTT Pymes"
               },
               {
                  "v":"Facebook"
               }
            ]
         },
         {
            "c":[
               {
                  "v":14.0,
                  "f":"14"
               },
               {
                  "v":"NNTT Pymes"
               },
               {
                  "v":"LinkedIn"
               }
            ]
         },
         {
            "c":[
               {
                  "v":15.0,
                  "f":"15"
               },
               {
                  "v":"NNTT Pymes"
               },
               {
                  "v":"NNTT para directivos de Pymes"
               }
            ]
         },
         {
            "c":[
               {
                  "v":16.0,
                  "f":"16"
               },
               {
                  "v":"NNTT Pymes"
               },
               {
                  "v":"NNTT para RRHH"
               }
            ]
         },
         {
            "c":[
               {
                  "v":17.0,
                  "f":"17"
               },
               {
                  "v":"NNTT Pymes"
               },
               {
                  "v":"Telemarketing"
               }
            ]
         },
         {
            "c":[
               {
                  "v":18.0,
                  "f":"18"
               },
               {
                  "v":"NNTT Pymes"
               },
               {
                  "v":"Twitter"
               }
            ]
         },
         {
            "c":[
               {
                  "v":19.0,
                  "f":"19"
               },
               {
                  "v":"PRL y MA"
               },
               {
                  "v":"Educ. para la igualdad de oportunid."
               }
            ]
         },
         {
            "c":[
               {
                  "v":20.0,
                  "f":"20"
               },
               {
                  "v":"PRL y MA"
               },
               {
                  "v":"Fundament. adaptación LOPD en Pymes"
               }
            ]
         },
         {
            "c":[
               {
                  "v":21.0,
                  "f":"21"
               },
               {
                  "v":"PRL y MA"
               },
               {
                  "v":"Manipulador de alimentos"
               }
            ]
         },
         {
            "c":[
               {
                  "v":22.0,
                  "f":"22"
               },
               {
                  "v":"PRL y MA"
               },
               {
                  "v":"Prevención de Riesgos Laborales"
               }
            ]
         }
      ]
   }
});

下面的代码是我用来将JSON(以前是从URL读取)保存在数组中,然后向我展示仅数据行的代码。

var data = httpRequest.responseText;
arrayDatos = data.split('{"c":');

for(var i = 1 ; i < arrayDatos.length; i++)
{
    document.getElementById("body").innerHTML +=  arrayDatos[i] + '<br/>';
}

哦天哪,JSON上的字符串操作? 您可能不知道,JSON是JavaScript Object Notation的首字母缩写。 因此,基本上,您有了Javascript对象的String表示形式,而不是将其转换回其表示的本地对象,而是选择使用String操作对其进行处理。 很好,它可以工作,但效率低下,难以维护。

所以这是一个明智的选择,使用JSON.parse(data)从对象的JSON表示中恢复对象:

var objectData = JSON.parse(data);
var rowsArray = objectData.table.rows;
for(var i = 0 ; i < rowsArray.length; i++) {
    var currentRow = rowsArray[i]
    var cellArray = currentRow.c;
    for (var j = 0; j < cellArray.length; j++) {
        var currentCell = cellArray[j];
        document.getElementById("body").innerHTML += currentCell.v + '<br/>';
    }
}

还要注意每一行如何具有一个单元格数组。 尽管您的问题充其量是隐性的,但我想这可能是您的问题,因为您的代码当前围绕cell数组分裂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM