我有这个:
String foo =
"options": {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
}
但是JSONObject
构造函数会重新排列键:
new JSONObject(foo).toString() =
"options": {
"6",
"3",
"7",
"2",
"5",
"1",
"4",
"8",
"9",
}
新订单是可重复的,这意味着每次执行都会导致相同(看似随机)的重新排列。
答案 0 :(得分:1)
在json序列中,字段并不重要,只有它们的嵌套。
答案 1 :(得分:1)
您的示例Strings
是无效的JSON。您有一个裸露的顶级字段options
,并且没有该字段的值。
javascript 对象,它是JSON表示,特别是JSONObject
,不保证字段的排序。
JSONObject是名称/值对的无序集合。
您可以使用数组维护排序。因此,如果您的数据是或可以表示为数组 - 从您的示例中看起来就像一个数组 - 那么元素的顺序将保持。
答案 2 :(得分:1)
对我来说,这看起来不像是有效的JSON。首先,整个字符串周围没有{}
或[]
。其次,看起来与options
相关联的数据应该在内部,而数组([]
)不是对象({}
)。如果它是一个数组,则会保留该顺序,而将这些值声明为属性,则无法保证其顺序。