在我的服务包中,我返回一个linkedHashMap,并在控制器中将其转换为JSON,例如:
JSONObject jsonObject = new JSONObject();
jsonObject.put("dataObject", JSONObject.fromObject(linkedHashMap));
return jsonObject.toString();
为什么将linkedHashMap转换为JSON时顺序会混乱?
在我的服务包中,我返回一个linkedHashMap,并在控制器中将其转换为JSON,例如:
JSONObject jsonObject = new JSONObject();
jsonObject.put("dataObject", JSONObject.fromObject(linkedHashMap));
return jsonObject.toString();
为什么将linkedHashMap转换为JSON时顺序会混乱?
我假设您正在使用json-lib。json-lib内部实现java.util.HashMap
以存储地图值。所以即使你一开始有一个 LinkedHashMap,当你put
在 jsonObject 中时,你也失去了排序。
如果顺序对您很重要,我建议使用 ArrayList;或者您可以将您的地图条目绑定到具有一些订购信息的键。
编辑:
正如 Maxim 所指出的,JSON 规范显然不需要有序的 Map。java.util.HashMap
与有序替代方案相比,它提供了很多性能优势,因此更常用于订购无关紧要的情况。
正如JavaDocs所说:
此类不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变。