javascript - 使用 JavaScirpt 解析 JSON 文件
问题描述
我正在尝试使用 JavaScript 解析 JSON 文件。我设法用 JavaScript 打开了一个本地 JSON 文件,并用这段代码打印了它的密钥。我不知道如何获取每个键的值。我想获取x, y, z
每个键的值并将它们分配给 JavaScript 中的变量。
脚本.js
function loadJSON(callback) {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', 'js/data.json', true);
xobj.onreadystatechange = function () {
if (xobj.readyState == 4 && xobj.status == "200") {
// .open will NOT return a value but simply returns undefined in async mode so use a callback
callback(xobj.responseText);
}
};
xobj.send(null);
}
// Call to function with anonymous callback
loadJSON(function(response) {
// Do Something with the response e.g.
var jsonresponse = JSON.parse(response);
// Assuming json data is wrapped in square brackets as Drew suggests
var keys = Object.keys(jsonresponse);
console.log(keys[0]);
});
数据.json
{
"a": {
"x": "12",
"y": "2",
"z": "17"
},
"b": {
"x": "8",
"y": "2",
"z": "21"
},
"c": {
"x": "9",
"y": "3",
"z": "17"
}
}
解决方案
您的 json 解析结果是一个对象,因此您只需要将其作为对象而不是数组进行处理。
var jsonresponse = JSON.parse(response);
for(let data in jsonresponse) {
for (let key in jsonresponse[data]) {
let value = jsonresponse[data][key];
console.log(key, value)
}
}
推荐阅读
- mysql - 需要使用mysql连接来自4个表的数据
- json - 使用 double 作为数据类型构造 Json 值
- flutter - Flutter:如何使用 CustomPainter() 实现这种自定义设计?
- c++ - QVBoxLayout 大小相同但小部件不同
- ruby-on-rails - 使用单一入口点将 Spring 与 Rails 连接起来
- azure-data-explorer - sizeLimit 属性的默认 100MB 值不适用于 Kusto 导出到外部表
- r - setwd() 和 getwd() 的问题
- javascript - nuxt.js 中的布局真的有用吗?有什么好处?
- javascript - 如何在表格上显示这些数据?
- powerbi - 如何使用 power query/m 语言根据 power BI 中的条件删除特定行