[英]How to access an array in a JSON object?
我有以下 JSON 对象:
[
{
"comments": [
{
"created_at": "2011-02-09T14:42:42-08:00",
"thumb": "xxxxxxx",
"level": 1,
"id": 214,
"user_id": 41,
"parent_id": 213,
"content": "<p>xxxxxx</p>",
"full_name": "xx K"
},
{
"created_at": "2011-02-09T14:41:23-08:00",
"thumb": "xxxxxxxxxxxxx",
"level": 0,
"id": 213,
"user_id": 19,
"parent_id": null,
"content": "<p>this is another test</p>",
"full_name": "asd asd asd asd asd"
}
],
"eee1": "asdadsdas",
"eee2": "bbbbb"
}
]
这是来自$.ajax
请求,我成功了....
success: function (dataJS) {
console.log(dataJS);
console.log(dataJS[eee1]);
console.log(dataJS.comments);
}
问题是我无法访问 JSON 对象中的项目,即使 dataJS 确实在控制台中正确显示。 想法?
那是因为您的基础对象也是一个数组。
console.log(dataJS[0].comments[0]);
我怀疑这会起作用
你回来的 JSON 实际上是一个数组本身,所以......
dataJS[0].comments[0].created_at
将是2011-02-09T14:42:42-08:00
等...
dataJS
和comments
都是数组,需要索引来访问适当的元素。
返回的对象本身就是一个数组,因此要获得第一个注释(作为示例),您可以通过以下方式访问它:
dataJS[0].comments[0]
console.log(dataJS);
console.log(dataJS[0].eee1);
console.log(dataJS[0].comments[0]);
做这样的事情: -
var dataJS = [{"comments":[{"created_at":"2011-02-09T14:42:42-08:00","thumb":"xxxxxxx","level":1,"id":214,"user_id":41,"parent_id":213,"content":"<p>xxxxxx</p>","full_name":"xx K"},{"created_at":"2011-02-09T14:41:23-08:00","thumb":"xxxxxxxxxxxxx","level":0,"id":213,"user_id":19,"parent_id":null,"content":"<p>this is another test</p>","full_name":"asd asd asd asd asd"}],"eee1":"asdadsdas","eee2":"bbbbb"}];
var created_at = dataJS[0].comments[0].created_at;
是的,正如其他人所说,JSON 实际上是一个数组(单个对象的)。 所以你需要引用一个索引。
有趣的是(对我而言),您的结果字符串确实成功验证为 JSON。 到目前为止,我一直认为,要成为有效的 JSON,它必须是一个对象(即 {})。
您必须将 ajax 请求中的 dataType 称为“JSON”。 让用户像下面那样做。
$.ajax({
url: $('#frmAddCourse').attr('action'),
type: 'POST',
data: $('#frmAddCourse').serialize(),
dataType: 'JSON',
success: function (data){
Materialize.toast(data['state'],2000);
},
error:function(){
Materialize.toast(errorMessage,2000);
}
});
JSON 必须用eval
函数解释(在明显的清理之后,请参阅 eval 的安全注意事项)。 您确定您的框架可以为您做到这一点吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.