如果这个JSON数据是动态生成的,那么如何在Javascript/jQuery中访问它?
我将PHP动态生成的数组发送到Javascript。它基本上是一系列未读消息。它包含发件人的姓名和他们发送的邮件 鉴于我不知道他们的姓名,我如何检索他们的姓名和信息如果这个JSON数据是动态生成的,那么如何在Javascript/jQuery中访问它?,javascript,arrays,json,Javascript,Arrays,Json,我将PHP动态生成的数组发送到Javascript。它基本上是一系列未读消息。它包含发件人的姓名和他们发送的邮件 鉴于我不知道他们的姓名,我如何检索他们的姓名和信息 {"Emma Giles": [{"message":"Hi Phil","date":"Tue 10 May 2:55 PM 2011"}], "Johnathan Macmanners": [{"message":"Hi Emma","date":"Sun 26 June 10:03 PM 2011"}], "Ellen Mur
{"Emma Giles":
[{"message":"Hi Phil","date":"Tue 10 May 2:55 PM 2011"}],
"Johnathan Macmanners":
[{"message":"Hi Emma","date":"Sun 26 June 10:03 PM 2011"}],
"Ellen Murley":
[{"message":"Hello","date":"Fri 04 May 4:05 PM 2012"},
{"message":"How are you?","date":"Fri 04 May 2:52 PM 2012"}],
"Amanda Patterson":
[{"message":"test","date":"Fri 27 April 10:07 AM 2012"}],
"ALEX Pell":
[{"message":"Hi Alvon","date":"Mon 05 March 10:07 AM 2012"}]}
我已经试过了,但出于某种原因,它只打印出数字,我用val替换了key,它一个接一个地打印出数组中的每个字符:
$.each(data, function(key, val)
{
console.log(key);
});
父容器是一个对象,而不是数组。然后就有了一个嵌套的对象数组
for (var key in data) {
// key is the name of the person,
// data[key] is the array containing the message data
for (var i = 0, l = data[key].length; i < l; i++) {
for (var msgKey in data[key][i]) {
// msgKey will be "message" or "date"
// data[key][i][msgKey] is the value of each key
}
}
}
for(变量输入数据){
//key是这个人的名字,
//data[键]是包含消息数据的数组
对于(变量i=0,l=data[key]。长度;i
看起来您的数据仍然被序列化并被识别为字符串
请尝试使用以下方法获取数据:
$.getJSON(url, function (data) {
$(data).each(function (key, value) {
// ...
});
});
。。。或者使用一个好的ol'
eval()
,但如果可以的话,您最好避免使用它。稍微清理一下JSON,您得到了一个由指向消息对象数组的用户名组成的哈希:
var data = {
"Emma Giles": [
{"message":"Hi Phil","date":"Tue 10 May 2:55 PM 2011"}
],
"Johnathan Macmanners": [
{"message":"Hi Emma","date":"Sun 26 June 10:03 PM 2011"}
]
};
你几乎可以得到你想要的:
$.each(data, function(name, messages) {
var messageText = messages[0].message;
alert(name + ': ' + messageText);
});
仅供参考,这里有一个这也可以:
var a = {"Emma Giles":
[{"message":"Hi Phil","date":"Tue 10 May 2:55 PM 2011"}],
"Johnathan Macmanners":
[{"message":"Hi Emma","date":"Sun 26 June 10:03 PM 2011"}],
"Ellen Murley":
[{"message":"Hello","date":"Fri 04 May 4:05 PM 2012"},
{"message":"How are you?","date":"Fri 04 May 2:52 PM 2012"}],
"Amanda Patterson":
[{"message":"test","date":"Fri 27 April 10:07 AM 2012"}],
"ALEX Pell":
[{"message":"Hi Alvon","date":"Mon 05 March 10:07 AM 2012"}]};
var keys = Object.keys(a);
for(var i = 0, max = keys.length; i < max; i++){
var key = keys[i]; //name
var val = a[key]; //messages array
console.log(key);
for(var j = 0, jmax = val.length; j < jmax; j++){
var message = val[j].message;
console.log(" "+message);
}
}
var a={“Emma Giles”:
[{“信息”:“你好,菲尔”,“日期”:“2011年5月10日星期二下午2:55”},
“约翰纳森·麦克佩雷斯”:
[{“信息”:“你好,爱玛”,“日期”:“2011年6月26日星期日晚上10:03”},
“艾伦·莫利”:
[{“消息”:“你好”,“日期”:“2012年5月4日星期五下午4:05”},
{“留言”:“你好吗?”,“日期”:“2012年5月4日星期五下午2:52”},
“阿曼达·帕特森”:
[{“消息”:“测试”,“日期”:“2012年4月27日星期五上午10:07”},
“亚历克斯·佩尔”:
[{“信息”:“你好,阿尔文”,“日期”:“2012年3月5日星期一上午10:07”};
var keys=对象。keys(a);
对于(变量i=0,max=keys.length;i
如果可能的话,我建议更改此json的格式在这里工作得很好-嗯,有点不对劲。我尝试过数据[0]和数据[1],它似乎将整个json对象视为一个长强对象,因此[0]引用“{”,而[1]引用“”(单数双引号)。有人知道为什么会出现这种情况吗?基本上,没有数据[0]
因为数据
是一个字典,而不是一个常规的数组
。同样,我看不出你开始使用的代码有什么特别的错误。啊,我忘了解析JSON,这就是为什么。