我正在使用一个servlet,它通过URL返回JSONArray的JSONObject:
http://myserver.corp:8080/webtools/myServlet?targetDB=myTargetDB&sqlStatement=myStatement¶m0=abc
输出:
[
{
"attribute1": "value1",
"attribute2": "value2",
"attribute3": "value3",
"attribute4": "value4",
}
]
现在这就像魅力一样,直到我发现订单属性因我推出的环境而异。
当我在Eclipse中启动程序时,我得到了上面的结果 - 但是当以可运行的JAR启动程序时,顺序颠倒了(attribute4到attribute1)。
现在我明白JSONObjects没有订购。但是必须有一个原因可以解决JSONObjects中属性顺序的反转。
有没有人有想法?
干杯, 添
答案 0 :(得分:1)
来自http://json.org(我的重点):
对象是一组无序名称/值对。
所以这个
{ "foo": 1, "bar": 2 }
和这个
{ "bar": 2, "foo": 1 }
是相同的对象。任何正在寻找订单的库都在寻找可以存在和不存在的东西。代码可以按任意顺序输出JSON对象。
答案 1 :(得分:0)
重复:JSONObject : Why JSONObject changing the order of attributes
如果你使用Jackson,你可以在课堂上订购字段,如果你的对象是Java POJO
@JsonPropertyOrder({ "attribute1", "attribute2", "attribute3"})
public class Attributes { ... }
答案 2 :(得分:0)
要解决此问题:
上课JSONObject
关于方法:public JSONObject()
更改this.map = new LinkedHashMap();
LinkedHashMap将按照将条目放入地图的顺序进行迭代
/**
* Construct an empty JSONObject.
*/
public JSONObject() {
this.map = new LinkedHashMap();
}