我有以下JSON数据:
0:[{"LoggerId":"1000651443","ReadingDate":"2018-12-05 00:03:03, "ReadingValue":"12.6", "Tooltip":"Someinfo"},
{"LoggerId":"1000651447","ReadingDate":"2018-12-05 00:04:03, "ReadingValue":"12.7", "Tooltip":"Someinfo"}]
1:[{"LoggerId":"1000651444","ReadingDate":"2018-12-05 00:03:05, "ReadingValue":"12.9", "Tooltip":"Someinfo"},
{"LoggerId":"1000651445","ReadingDate":"2018-12-05 00:03:07, "ReadingValue":"14.9", "Tooltip":"Someinfo"}]
2:[{"LoggerId":"1000651446","ReadingDate":"2018-12-05 00:03:17, "ReadingValue":"13.6", "Tooltip":"Someinfo"},
{"LoggerId":"1000651446","ReadingDate":"2018-12-05 00:04:17, "ReadingValue":"43.6", "Tooltip":"Someinfo"}]
我希望能够通过每个阵列环及其所有元素。
到目前为止,我只能遍历主数组,而不能遍历其内容。
success: function (d) {
var parsedData = $.parseJSON(d);
var objCount = Object.keys(parsedData).length;
$.each(parsedData, function (key, value) {
console.log[value.LoggerId, new Date(value.ReadingDate), Number(value.ReadingValue), value.ToolTip]
});
},
我尝试了一些嵌套循环,但是我将对象未定义为错误。
我想遍历0及其所有元素并分配它们,然后依次为1、2,依此类推...
TIA
答案 0 :(得分:1)
如果收到json
阵列然后respose就可以通过循环each
在方法jQuery
var data = [
[{
"LoggerId": "1000651443",
"ReadingDate": "2018-12-05 00:03:03",
"ReadingValue": "12.6",
"Tooltip": "Someinfo"
}],
[{
"LoggerId": "1000651444",
"ReadingDate": "2018-12-05 00:03:05",
"ReadingValue": "12.9",
"Tooltip": "Someinfo"
}],
[{
"LoggerId": "1000651446",
"ReadingDate": "2018-12-05 00:03:17",
"ReadingValue": "13.6",
"Tooltip": "Someinfo"
}]
];
$.each(data, function(i, item) {
console.log(item[0].LoggerId);
$("#res").append(item[0].LoggerId + "<br>");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="res"></div>
如果您的json
文件中有大量数据,请尝试使用get
方法
$.get("https://jsonstorage.net/api/items/344a6593-6ee4-45b2-a85c-227f76e32880", function(data, status){
$.each(data, function(i, item) {
console.log(item.LoggerId);
$("#res").append(item.LoggerId + "<br>");
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="res"></div>
答案 1 :(得分:1)
您主要的问题是在这一行:
$.each(parsedData, function (key, value) {
您有一组对象数组:这意味着您需要使用value [0]而不是value。
您可以继续使用该格式的 value.LoggerId .... 如果您flat您的数组:
$.each(parsedData.flat(), function (key, value) {
摘要:
var parsedData = [[{
"LoggerId": "1000651443",
"ReadingDate": "2018-12-05 00:03:03",
"ReadingValue": "12.6",
"Tooltip": "Someinfo"
}],
[{
"LoggerId": "1000651444",
"ReadingDate": "2018-12-05 00:03:05",
"ReadingValue": "12.9",
"Tooltip": "Someinfo"
}],
[{
"LoggerId": "1000651446",
"ReadingDate": "2018-12-05 00:03:17",
"ReadingValue": "13.6",
"Tooltip": "Someinfo"
}]] ;
//
// first solution
//
$.each(parsedData, function (key, value) {
console.log(value[0].LoggerId, new Date(value[0].ReadingDate), Number(value[0].ReadingValue), value[0].Tooltip)
});
console.log('-----------------------------');
//
// second solution with array.flat
//
$.each(parsedData.flat(), function (key, value) {
console.log(value.LoggerId, new Date(value.ReadingDate), Number(value.ReadingValue), value.Tooltip)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
根据您的最后评论:
每个阵列[{A,B,C,d}]是唯一的设备,所以0:[{A,B,C,d}]和1:[{A,B,C,d}]是两个不同的数据集。因此,我需要遍历索引([0],1,[2],[3]等),然后遍历其中的元素{a,b,c,d}
一个简单的解决方案可以是一个双为:
var arr = [[1,2,3], [4,5,6], [7,8,9]];
for(var i=0; i< arr.length; i++) {
console.log('sub array N. ' + i);
for(var j=0; j<arr[i].length; j++) {
console.log('element n. ' + j + ': ' + arr[i][j]);
}
}
答案 2 :(得分:0)
以下对我有用:
success: function (d) {
var parsedData = $.parseJSON(d);
$.each(parsedData, function (key, value) {
var result = $.parseJSON(value);
$.each(result, function (k, v) {
//display the key and value pair
console.log([new Date(v.ReadingDate), Number(v.ReadingValue)]);
});
});
},
我能够遍历数组,然后遍历键的内容。一旦我从各个数组中解析了JSON数据,它似乎就可以工作了。