在保留原始键顺序的同时解析JSON字符串

时间:2014-01-29 10:58:56

标签: javascript json

我有以下JSON字符串:

[{
    "Date": "1",
    "Time": "2007-10-01",
    "Tag": "test",
    "JetSpeed": "note",
    "HeadTemp": "200.00",
    "FaultList": "10.00;"
}, {
    "Date": "2",
    "Time": "2007-10-02",
    "Tag": "test2",
    "JetSpeed": "note2",
    "HeadTemp": "300.00",
    "FaultList": "20.00;"
}, {
    "Date": "3",
    "Time": "2007-09-01",
    "Tag": "test3",
    "JetSpeed": "note3",
    "HeadTemp": "400.00",
    "FaultList": "30.00;"
}]

我正在尝试使用此代码来获取JSON数据,因此我可以使用它:

var logtabledata = $.parseJSON(data.Parameters);
// When I use this gives me array objects

例如,如果您访问logtabledata[0],则第一个键为Date,值为1.下一个键为FaultList值为10.00,但我需要下一个取而代之的是Time

它按排序顺序排列数据,但我需要保留密钥的原始顺序。这是可能的,如果是的话,怎么样?

2 个答案:

答案 0 :(得分:5)

如果要保留顺序,则需要使用数组,而不是对象:

  

对象是Object类型的成员。 这是无序的   属性集合,每个属性包含一个原始值,   对象或功能。


或者,您也可以为订单目的创建一个键数组:

例如:

var order =  ['Date', 'Time', 'Tag', 'JetSpeed', 'HeadTemp', 'FaultList'];

logtabledata.forEach(function (item) {
   order.forEach(function (key) {
        console.log(item[key]);
    });
});

答案 1 :(得分:1)

CD .. 所述,对象是无序的属性集合。

您至少有两个选择:

  • 您可以使用数组而不是对象

  • 您可以使用其名称轻松遍历数组并以所选顺序打印/使用对象中的属性。

    var a = $.parseJSON(data.Parameters);
    
    for (var i = 0, ilen = a.length; i < ilen; i += 1) {
        console.log(a[i].Date);
        console.log(a[i].FaultList);
        // etc
    }