重新放置json数组对象元素

时间:2018-07-16 20:34:13

标签: javascript json

嗨,我想将下面的json数据转换成不同的格式,这是对我的json数据的重新排列。我也理解我们通过键访问数据,但是我的要求如下所示,我对此无能为力。在必填数据的下方,您可以看到月份始终排在第一位。

给定数据:-

[ { "Operating Company" : "7", "month" : "March", "Insolvency" : "2", "SPV / Asset Backed" : "4" }, { "Operating Company" : "3", "month" : "July", "Insolvency" : "43", "TBD" : "1" }, { "Operating Company" : "6", "month" : "August", "SPV / Asset Backed" : "27" }, { "Operating Company" : "54", "month" : "September", "Insolvency" : "114", "Operational Company" : "1", "SPV / Asset Backed" : "15" } ]

所需数据:-

[ { "month" : "March", "Operating Company" : "7", "Insolvency" : "2", "SPV / Asset Backed" : "4" }, {"month" : "July",  "Operating Company" : "3", "Insolvency" : "43", "TBD" : "1" }, { "month" : "August", "Operating Company" : "6", "SPV / Asset Backed" : "27" }, {"month" : "September",  "Operating Company" : "54", "Insolvency" : "114", "Operational Company" : "1", "SPV / Asset Backed" : "15" } ]

1 个答案:

答案 0 :(得分:0)

JSON规范不能保证JSON处理器如何处理对象中键-值对的顺序:

  

6个对象

     

JSON [...]语法没有为名称/值对的排序赋予任何意义。这些都是语义考虑因素,可以由JSON处理器定义,也可以在规范中定义JSON用于数据交换的特定用途。

     

来源:ECMA-404, 2nd Edition / December 2017, 6 Objects

ECMAScript 2015规范不保证对象中键的顺序:

  

9.1普通对象的内部方法和内部插槽   9.1.11 [[枚举]]()

     

[...]未指定枚举属性的机制和顺序[...]

     

来源:ECMA-262, 6th Edition / June 2015

因此,您可以更改JSON对象中键/值对的顺序,但是如果您将JSON.parse()更改为JavaScript对象,则不再保证该顺序。

但是,如果在JavaScript中解析时需要保持JSON对象的键值对的顺序,则需要编写自己的将JSON对象解析为JavaScript Map的解析。 Map保证键的顺序。

由于您在评论中提到D3.js需要此功能,因此我很确定您的实际问题是其他问题。随时为您的D3.js问题打开另一个问题。

相关问题