JSON String循环和打印

时间:2015-04-17 10:34:45

标签: javascript json

我有一个这种格式的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打印出一个字符串但是当我试图获得距离时我得到一个未定义的消息而不是错误它只是返回undefined。

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);
});

1 个答案:

答案 0 :(得分:1)

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);
}