在我的服务包中,我返回一个linkedHashMap并在控制器中将它转换为JSON,例如:
JSONObject jsonObject = new JSONObject();
jsonObject.put("dataObject", JSONObject.fromObject(linkedHashMap));
return jsonObject.toString();当将linkedHashMap转换为JSON时,为什么顺序会很混乱呢?
发布于 2013-10-09 07:14:13
不能对JSON对象中的元素进行排序。
来自http://www.json.org/的JSON规范
对象是一组无序的名称/值对。
发布于 2013-10-09 07:44:43
我想您正在使用吉森利卜。json-lib在内部实现java.util.HashMap来存储映射值。因此,即使您在开始时有一个LinkedHashMap,当您在jsonObject中使用它时,您也失去了排序。
如果订单对您很重要,我建议您使用ArrayList;或者您可以将映射条目绑定到包含一些排序信息的键上。
编辑:如Maxim所指出的,JSON规范显然不需要有序地图。与有序的替代方案相比,java.util.HashMap提供了许多性能优势,因此在排序不重要的情况下使用更频繁。
正如JavaDocs所说:
这个类不能保证映射的顺序;特别是,它不能保证随着时间的推移,顺序将保持不变。
https://stackoverflow.com/questions/19264808
复制相似问题