我在自学jquery和json工作。我一直在进步,但是现在让我很困惑。我的最终目标是能够从我拥有的文本文件中解析json,然后将它们存储为javascript对象,以便我可以用它做更多的事情。
这就是我所做的。我有以下json格式的数据(从我编写的java类创建)。请注意,data.json如下所示:
{"Time": 15,
"Distance": 20,
"Position":[{"x":5,"y":10},
{"x":15,"y":20}]}
我在上面的问题中对以上内容进行了格式化,以使其易于理解,因为它们位于单独的行中,但是原始文件将所有内容都包含在一行中。
我在脚本中使用了以下代码:
$(document).ready(function(){
console.log("ready!");
$.getJSON('data.json', function(key,val)
{
alert(val.Time);
alert(val.Distance);
alert(val.Position);
});
});
但是它输出的是三个“未定义”警报。为什么?我的最终目标是将“时间”,“距离”和“位置”存储为javascript对象,以便可以在用html制作的图形上绘制它们。但是,由于我的警报未正确读取/解析json对象,因此我显然与之接近。
因此,我预感将其更改如下:
$(document).ready(function(){
console.log("ready!");
$.getJSON('data.json', function(key,val)
{
alert(key.Time);
alert(key.Distance);
alert(key.Position);
});
});
好吧,这些主要是有希望的,因为我会收到以下警报:
Alert 1 Output: 15,
Alert 2 Output: 20,
Alert 3 Output: [Object Object], [Object Object]
好吧,我离我很近,但是现在很困惑。关键不应该是给我警报输出“时间”,“距离”和“位置”,而val应该是“ 15”,“ 20”和“ [对象对象],[对象对象]”。我认为json的工作方式像哈希表一样。嗯
另外,我是否需要执行.each(key,val)来解析名为Position的列表?因为显然Object Object不会对我有多大帮助。我基本上想将此列表位置保存为javascript obj之类的
myList = [[5, 10], [15,20]]
无论如何,那是我的想法。多谢您的宝贵时间。我会支持任何答复并帮助我的人。这对我很重要。
问候,
怪异欧米茄
最佳答案
我不确定您要使用function(key,val) { ... }
做什么,但这完全不是jQuery的getJSON的工作方式。 getJSON的回调函数采用三个参数,分别为data
,textStatus
和jqXHR
。我怀疑您会发现data
参数本质上是您要构建的javascript对象,除了带有字段'x'和'y'而不是每个嵌套数组。为了获取数据,我将执行以下操作:
for (var i = 0; i < data.Position.length; i ++)
do_something_with (data.Position[i].x, data.Position[i].y);
关于javascript - 解析Json文档。您能解释为什么给出关键值吗?还有助于更好地解析我的列表吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17533701/