问题如下:
我有一个 JSON 文件,其中包含具有以下名称的对象:"item0": { ... }、"item1": { ... }、"item2": { ... }
。但在使用 if 方法时我无法访问它们。
到目前为止我所做的事情:
$.getJSON('/assets/storage/items.json', function(data) {
jsonStringify = JSON.stringify(data);
jsonFile = JSON.parse(jsonStringify);
addItems();
});
var addItems = function() {
/* var declarations */
for (var i = 0; i < Object.keys(jsonFile).length; i++) {
path = 'jsonFile.item' + i;
name = path.name;
console.log(path.name);
console.log(path.type);
}
}
如果我console.log path.name 它返回未定义。但如果我输入 jsonFile.item0.name 它会返回值。那么我如何使用字符串路径,以便将其视为对象,或者是否有其他方法来命名 json 项。
最佳答案
正如其他人所说,'jsonFile.item' + i
没有从 jsonFile
中检索任何内容:它只是一个字符串。
其他问题:
- 首先对数据进行字符串化然后再次解析是没有意义的。这就是来回移动,最终到达您已经所在的位置:
data
是您想要使用的对象 - 请勿将数据命名为
jsonFile
。它是一个对象,而不是 JSON。 JSON 是文本。但由于上面的注释,你不需要这个变量 - 使用
var
、let
或const
声明变量,并避免使用全局变量。 - 使用类似 Promise 的语法 (
$.getJSON( ).then
) - 迭代对象属性,而不假设它们被称为
item0
、item1
、...
建议代码:
$.getJSON('/assets/storage/items.json').then(function(data) {
for (const path in data) {
console.log(data[path].name, data[path].type);
}
});
关于JavaScript 选择类似数组的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55344346/