Json坐在我的localhost上:/ data /:
{
"children": [
{
"name": "analytics",
"size": "1243"
},
{
"name": "math",
"size": "4343"
},
{
"name": "algebra",
"size": "1936"
},
{
"name": "calc",
"size": "3936"
},
{
"name": "geom",
"size": "2136"
},
{
"name": "Quant",
"size": "4136"
}
]
}
以下是我尝试访问json的方法:
var interval = setInterval(function() {
$.getJSON("http://localhost:8080/dev_tests/d3/examples/data/flare2.json", function(json) {
$.each(json.children,function(i,name){
alert(json.children);
});
});
}, 3000);
数据很好。也就是说,当我运行 console.log(json)时,我可以在firebug中看到上面的json名称/值txt对。但是,在每个名称值对之前,我看到了单词Object。因此,例如,而不是我的日志显示{name =“analytics”,size =“1243”},..它实际上显示:[Object {name =“analytics”,size =“1243”},...是我的警报显示: [object Object] 而不是 name =“analytics”,size =“1243”。 为什么这样,有没有办法在文本中获取我的json名称/值对,以便我可以存储为javascript字符串?
非常感谢提前。
答案 0 :(得分:2)
jQuery在使用jQuery.getJSON
或将响应指定为JSON时会自动解码响应。如果您想要简单的回复,请改用jQuery.ajax
。
答案 1 :(得分:1)
JSON中的 O 代表“对象”。这是一种将JavaScript对象序列化为字符串(以及后面)的方法。您似乎一方面依赖于转换(引用children
),但另一方面又不希望完成转换。如果您真的希望children
成为您描述的格式的字符串集合,则应该以这种方式存储它。如果你真的想要对象表示法(并转换为客户端中的对象),那么你可以简单地使用对象的属性。
var interval = setInterval(function() {
$.getJSON("http://localhost:8080/dev_tests/d3/examples/data/flare2.json", function(json) {
$.each(json.children,function(i,item){
alert("name = " + item.name + ", size = " + item.size);
});
});
}, 3000);
答案 2 :(得分:0)
你所说的一切都是萤火虫和警报的正常行为。您无法提醒对象。
以下是如何在$ .get回调中循环响应的示例
$.each(json.children, function(i, item){
$('body').append('<p>Name: '+item.name+' , Size: '+item.size+'</p>')
})
答案 3 :(得分:0)
好吧,使用对象是"Javascript Object Notation"的意图。
实际上,你的json是一个对象数组。
{
"children": [ // <-- Array
{...},// <- Object
{...} // <- Object
]
}
您可以通过以下方式访问键值对:children[0].name
for (var i=0;i< children.length; ++){
console.log( children[i].name);
console.log( children[i].size);
}