迭代格式化的JSON数组

时间:2018-01-31 18:21:23

标签: javascript sql

我正在查询MS SQL数据库,它返回一个格式化的JSON数组。以下是返回内容的示例。我几乎使用了我可以找到的每个JavaScript示例迭代数组,但没有任何工作:

[
  [
    {"id":1,"Title":"Friday"},
    {"id":2,"Title":"Saturday"},
    {"id":3,"Title":"Sunday"}
  ]
]

3 个答案:

答案 0 :(得分:3)

你的json数组有两个问题需要首先解决

  1. 周日缺少"
  2. 你有一个数组数组,而不仅仅是一个数组。
  3. 当您的数组正确时,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"}]] 循环。