如何在解析 JSON 对象时保留键的顺序

问题描述 投票:0回答:1

我需要在解析 json 数据时保留键的顺序。在下图中,原始键按“ProgramName、Curtailment1、2 等”顺序排列,但解析后按字母顺序排列。

我正在尝试下面的解决方法来修复它,但困惑如何用原始键顺序的所有数据填充新数组。

    var keys = [];

    for (var key in dataset[0]) {  //dataset is parsed json 
        if (dataset[0].hasOwnProperty(key)) {
            keys.push(key);
        }
    } 

enter image description here

编辑:如上所示迭代键后,我按原始顺序(在键数组中)获取键,但问题是我不知道在映射键后获取所有记录。

javascript jquery json javascript-objects
1个回答
3
投票

JavaScript 中的

Object
键没有像
Array
那样排序。因此,当您在对象上使用
Object.keys()
或使用
for/in
循环时,不承诺按固定顺序返回键。

要解决此问题,您应该将数据结构转换为

Array
格式。 例如,将
{ "CurtailmentDT1": "High Icon", "CurtailmentDT2": "Medium Icon" }
更改为
[ "High Icon", "Medium Icon" ]
或使用
order
键来维护索引,例如

{
  "CurtailmentDT1": { "index": 1, "value": "High Icon" },
  "CurtailmentDT2": { "index": 2, "value": "Medium Icon" }
}

使用

index
键,您可以对 JSON 中的键/值进行排序。

您还可以使用

Map
数据结构,它更像是
Object
,但它使键保持有序。

© www.soinside.com 2019 - 2024. All rights reserved.