3

在我的服务包中,我返回一个linkedHashMap,并在控制器中将其转换为JSON,例如:

JSONObject jsonObject = new JSONObject();
jsonObject.put("dataObject", JSONObject.fromObject(linkedHashMap));
return jsonObject.toString();

为什么将linkedHashMap转换为JSON时顺序会混乱?

4

2 回答 2

0

您不能对 JSON 对象中的元素进行排序。

来自http://www.json.org/的 JSON 规范

对象是一组无序的名称/值对

于 2013-10-09T07:14:13.437 回答
0

我假设您正在使用json-libjson-lib内部实现java.util.HashMap以存储地图值。所以即使你一开始有一个 LinkedHashMap,当你put在 jsonObject 中时,你也失去了排序。

如果顺序对您很重要,我建议使用 ArrayList;或者您可以将您的地图条目绑定到具有一些订购信息的键。

编辑: 正如 Maxim 所指出的,JSON 规范显然不需要有序的 Map。java.util.HashMap与有序替代方案相比,它提供了很多性能优势,因此更常用于订购无关紧要的情况。

正如JavaDocs所说:

此类不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变。

于 2013-10-09T07:44:43.057 回答