我的数据格式为
{
"id1":["name1",10,20],
"id2":["name2",12,20],
"id3":["name3",14,21]
}
正在阅读
var dat;
$(document).ready(function() {
$.getJSON('data.json', function(data) {
dat = data.items;
console.log(dat);
});
});
由于我收集了(请澄清我是否错了)这是一个很好的json格式,因为它缺少字段名称,这对于正确阅读来说是个问题。此外,':'似乎创建了类似字典类的东西,我不确定是否会阻止生成的对象可迭代。如果我在控制台中调用它(例如dat[0]
),我会得到“未定义”,但是这里可能还有一个jquery错误。
所以问题是如何阅读这个以便数据可访问/可迭代?提前谢谢。
答案 0 :(得分:2)
数据格式(编辑后)没有任何问题,但您尝试使用的格式items
并不存在。
您可以遍历对象中的项目,并访问每个数组中的值:
$.each(data, function(key, value){
// key contains "id1", "id2", and "id3" for the iterations
// value is the array
var name = value[0]; // contains "name1", "name2", "name3"
var num1 = value[1]; // contains 10, 12, 14
var num2 = value[2]; // contains 20, 20, 21
});
注意:对象中的项目顺序未定义,因此您可以按"id1", "id2", "id3"
的顺序或"id2", "id3", "id1"
之类的其他顺序获取它们。不同的浏览器会以不同的顺序返回它们。
答案 1 :(得分:0)
当JQuery调用回调时,data
参数是解析JSON产生的对象。它没有items
属性。我不确定你要做什么,但你可以这样做:
$(document).ready(function() {
$.getJSON('data.json', function(data) {
$.each( data, function( key, val ) {
console.log("Key: " + key + "; value: " + val);
});
});
});
答案 2 :(得分:0)
我相信你对JSON遵循的数据结构感到困惑。
JSON确实遵循与Dictionary类似的结构。但是在JavaScript中,没有.items()
方法(我假设你用data.items
表达的意思),就像在Python等其他语言中一样。当您编写data.property
时,它等同于data['property']
,就像在字典数据结构中获取密钥的值一样。
如果其他答案对您的案例不起作用,您可以在此处找到解析JSON的一些说明How to get all properties values of a Javascript Object (without knowing the keys)?。
答案 3 :(得分:0)
几种不同的方式来获取数据。
var data = {
"id1":["name1",10,20],
"id2":["name2",12,20],
"id3":["name3",14,21]
};
$("div").append(data["id1"] + "<br />");
$("div").append(data["id2"][0] + "<br />");
$("div").append(data["id2"][1] + "<br />");
$("div").append(data["id2"][2] + "<br />");
$.each(data, function(index, val){
$("div").append(index + " : " + val + "<br />");
$.each(val, function(key, value){
$("div").append(key + " : " + value + "<br />");
});
});