值的顺序在 JSON 对象中是否重要?
我有一个JSON对象,我已经在我的Java程序中构建了它。
JSONObject jObj = {"AAA:aaa","BBB:bbb","CCC:ccc"}
我正在将此对象发送到服务器,其中它期望以下类型的JSON对象。
{"BBB:bbb", "AAA:aaa", "CCC:ccc"}
我的问题是,JSON对象的顺序在服务器端真的重要吗?如果是,我该如何更改订单?
我有一个JSON对象,我已经在我的Java程序中构建了它。
JSONObject jObj = {"AAA:aaa","BBB:bbb","CCC:ccc"}
我正在将此对象发送到服务器,其中它期望以下类型的JSON对象。
{"BBB:bbb", "AAA:aaa", "CCC:ccc"}
我的问题是,JSON对象的顺序在服务器端真的重要吗?如果是,我该如何更改订单?
我的问题是,JSON对象的顺序在服务器端真的重要吗?
这应该无关紧要。根据各种 JSON 规范,属性的顺序并不重要。例如:
“对象是一组无序的名称/值对。(来源 json.org)
“对象是零个或多个名称/值对的无序集合,其中名称是字符串,值是字符串,数字,布尔值,null,对象或数组。(来源 RFC 7159)
不幸的是,有1个尼特维特忽略了规范的这一方面,并对属性的顺序给予了一些意义。(当指定API的人和实现API的人之间出现脱节,并且做规范工作的人并不真正理解JSON时,通常会犯错误。
幸运的是,设计/实现服务器的人很可能没有犯这个错误。我遇到的大多数Java JSON解析器在解析时都不会保留属性顺序...默认情况下2.很难意外地实现一个服务器,其中被解析的JSON属性的顺序很重要。
如果是,我该如何更改订单?
困难重重,我担心:
Map
LinkedHashMap
TreeMap
1 - 例如,这个可怜的开发人员正在为之工作的尼特威特人...https://stackoverflow.com/a/4515863/139985
2 - RFC 7159也说:“JSON解析库在是否使对象成员的排序对调用软件可见方面存在差异。其行为不依赖于成员排序的实现将是可互操作的,因为它们不会受到这些差异的影响。根据我的阅读,这建议JSON库应该从应用程序代码中隐藏对的任何顺序。
3 - JSON-simple : https://code.google.com/p/json-simple/.可能还有其他人。