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