我有这种格式的JSON字符串
{"prey":["{\"distance\": 8.686924173343307, \"signal\": \"-59\", \"frequency\": 2447, \"mac\": \"00:00:00:00:00:00\", \"ip\": \"192.168.43.27\"}"]}
我正在使用
var jsonSpy = JSON.parse(userList);
解析此json我正在尝试做的事情是使用下面的代码来解决这个问题,我有两个变体都做同样的事情。我可以得到它来输出距离,信号,频率,mac和ip的每个单独的数组,但是却无法如下面的代码所示获得单独的数据位。我知道循环,每个循环都做同样的事情,json打印出一个字符串,但是当我尝试获取距离时,我得到的是一条未定义的消息而不是错误,它只会返回未定义的消息。
for(var i = 0; i < jsonSpy.prey.length; i++)
{
console.log(jsonSpy.prey[i]);
console.log(jsonSpy.prey[i].distance);
ctx.fillRect(jsonSpy.prey[i].distance, 300, 20, 20);
}
$.each(jsonSpy.prey, function(i, item) {
console.log(jsonSpy.prey[i]);
console.log(jsonSpy.prey[i].distance);
ctx.fillRect(jsonSpy.prey[i].distance, 300, 20, 20);
});
最佳答案
jsonSpy.prey[0]
中的数据仍然是字符串。为了在内部使用JSON,您需要再次通过JSON.parse()
运行它:
for(var i = 0; i < jsonSpy.prey.length; i++)
{
var innerJSON = JSON.parse(jsonSpy.prey[i]);
console.log(jsonSpy.prey[i]);
console.log(innerJSON.distance);
ctx.fillRect(innerJSON.distance, 300, 20, 20);
}