[英]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.