javascript - 迭代 JSON 给出字符,而不是元素
问题描述
我正在使用 .getJSON 将数据拉入图形。出于某种原因,当我尝试遍历 JSON 数组时,它给了我每个单独的字符,就像它没有将其视为一个数组一样,但是当我将数据转储到控制台时,它是格式正确的 JSON。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$.getJSON("/getgraphdata", function(result) {
console.log(result.length);
testFunction(result);
});
</script>
</head>
<body>
<script>
function testFunction(data) {
console.log(data); // line 16
//console.log(data.length); Gives total character count.
for(var i = 0; i < data.length; i++) {
var obj = data[i];
//console.log(obj.id);
}
}
</script>
</body>
</html>
这是直接来自控制台的数据。(从第 16 行开始)
[{"id":"1375857","temperature":"78.98","humidity":"90.2","nodeName":"Bsmt_Front","timestamp":"1536424185"},{"id":"1375856","temperature":"78.98","humidity":"77.1","nodeName":"Bsmt_Back","timestamp":"1536424185"},{"id":"1375855","temperature":"77.54","humidity":"49.9","nodeName":"Living_Room","timestamp":"1536424180"},{"id":"1375854","temperature":"0","humidity":"0","nodeName":"Bsmt_Room","timestamp":"1536424179"},{"id":"1375853","temperature":"79.52","humidity":"82.7","nodeName":"Flow_Tent","timestamp":"1536424158"}]
我在这里使用了评分最高的答案 JavaScript loop through json array?
如果我注释掉第 21 行,它会显示未定义。如果我执行 console.log(obj) 它会遍历数组中的每个字符。
一切都指向它没有将其视为数组,但 [] 在那里。
解决方案
您可以使用 JSON.parse 将字符串解析为 javascript 对象
所以在你里面testFunction
你应该做
data = JSON.parse(data)
推荐阅读
- python-3.x - 如何在 python vlc 中获取音频输出通道和音轨
- c# - 无法为文件夹设置完全控制权限
- javascript - 问:React-Draft-Wysiwyg 如何为 blockTypes 添加自定义标签?
- ios - Swift 5.0 编译器无法导入使用 Swift 4.2.1 编译的模块
- java - 提取在 Java 中呈现 HTML 页面期间获得的 URL 列表
- r - 如何调整热图的边距?
- xamarin.android - Cardview 内的 Imageview 有一个 Image Src,它超出了 Imageview
- amazon-web-services - S3 存储桶未从 AWS CLI 拒绝访问
- ruby-on-rails - nil:NilClass NoMethodError in Projects#new 的未定义方法“map”
- docker - 我可以为我的堆栈中的服务设置稳定的完全限定域名吗?