javascript - JSON字符串循环并打印

标签 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 打印出一个字符串,但是当我尝试获取距离时,我收到一条未定义的消息而不是错误,它只是返回未定义。

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

关于javascript - JSON字符串循环并打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29696856/

相关文章:

javascript - if 语句不适用于文本颜色

javascript - 如何向 Google map 添加折线?

python - 在 Python 中解析 Elasticsearch json 输出

javascript - 在 Javascript 中每 n 秒读取一次 JSON

javascript - rails 4 : setting link destination in CoffeeScript function

javascript - 如何使用 DOM 生成小计金额

javascript - 间歇性 "Bootstrap's JavaScript requires jQuery”错误

C++ boost json ptree 解析器无法解析字符串

php - 如何以android的登录形式进行json连接?

jquery - 如何使用jquery ajax打印json数组?