我正在查询MS SQL数据库,它返回一个格式化的JSON数组。以下是返回内容的示例。我几乎使用了我可以找到的每个JavaScript示例迭代数组,但没有任何工作:
[
[
{"id":1,"Title":"Friday"},
{"id":2,"Title":"Saturday"},
{"id":3,"Title":"Sunday"}
]
]
答案 0 :(得分:3)
你的json数组有两个问题需要首先解决
"
当您的数组正确时,SQL的返回应如下所示:
'[{"id":1,"Title":"Friday"},{"id":2,"Title":"Saturday"},{"id":3,"Title":"Sunday"}]'
这不是一个json对象,它只是一个看起来像一个的字符串,要将它作为一个json对象/数组使用,你需要像这样解析它:
var jsonArray = JSON.parse('[{"id":1,"Title":"Friday"},{"id":2,"Title":"Saturday"},{"id":3,"Title":"Sunday"}]');
如果你无法绕过数组中的[[]]
数组,你可以像这样处理它:
var jsonOutterArray = JSON.parse('[[{"id":1,"Title":"Friday"},{"id":2,"Title":"Saturday"},{"id":3,"Title":"Sunday"}]]');
var jsonArray = jsonOuterArray[0];
有了很多方法可以在javascript中迭代它,这一切都取决于你使用的库以及你想要从中得到什么,比如jQuery示例不仅给出了对象而且给出了数组中的位置那个对象,但forEach不会。
对于每个示例,jsonArray
将是SQL中解析出的json,key
将是数组中的位置,value
将成为数组中的对象。
JavaScript :(数组原型forEach)
jsonArray.forEach(function(value){
console.log(value.id, value.Title)
});
JavaScript :( for loop)
for (var key = 0; key < jsonArray.length; key++) {
var value = jsonArray[key];
console.log(value.id, value.Title)
};
jQuery的:
$.each(jsonArray,function (key, value){
console.log(value.id, value.Title)
});
答案 1 :(得分:1)
使用nodejs(ES5语法):
> [[{"id":1,"Title":"Friday"},{"id":2,"Title":"Saturday"}, {"id":3,"Title":"Sunday"}]][0]
.forEach(function(elt){ console.log(elt.id, elt.Title)})
1 'Friday'
2 'Saturday'
3 'Sunday'
答案 2 :(得分:0)
请注意,星期日之前缺少引号:
EditionEditDto
因此您将无法评估此JSON。假设JSON已更正为
[[{"id":1,"Title":"Friday"},{"id":2,"Title":"Saturday"}, {"id":3,"Title":Sunday"}]]
您将能够以常规方式迭代它,例如使用[[{"id":1,"Title":"Friday"},{"id":2,"Title":"Saturday"}, {"id":3,"Title":"Sunday"}]]
循环。