JAVA中遍历JSONObject不能按原顺序遍历

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中遍历JSONObject不能按原顺序遍历相关的知识,希望对你有一定的参考价值。

现已有一个JSONObject,里面包含了KEY-VALUE,但我并不知道KEY。
我的做法是用迭代器Iterator来遍历,通过JSONObject.keys()来得到一个Iterator实例。
——————
遍历的问题解决了,但还有一个问题这样的遍历结果不是按原JSONObject中的顺序遍历的,想知道有没有什么方法能按原顺序遍历呢?

这个估计没办法,json本来就是无序的。我来试一下,没遇到这种情况。
可以重写原码,不过不推荐,如下:
要使输出是有序的,可以用LinkedHashMap来替换HashMap。
修改org.json.JSONObject的构造函数,
public JSONObject()
this.map = new LinkedHashMap(); //new HashMap();


可能会对JSON 函数的执行效率有所影响。追问

嘿嘿,这个方法之前我也看到过,他这得改源码,没有试过。
问题现在自己解决了,还是谢谢你

追答

请问还有什么办法?

参考技术A 当你取的时候相当于一个map,而map是无序的

JAVA中按原顺序遍历JSONObject

Map<String, Object> rmap = new Gson().fromJson(resultStr, LinkedHashMap.class);
如题,就是这么解决的 Gson 是个好东西

正常的玩法应该是这样, 因为 ObjectMapper 有各种配置, 可以更好的实现转换, 比如 解析数据顺序, 忽略错误字段 等等 高端大气上档次的东西, 你的方法已经被时代淘汰了。
ObjectMapper objectMapper = new ObjectMapper();
Map map = objectMapper.readValue(resultStr,LinkedHashMap.class);
参考技术A 你是要在客户端用js来做,还是服务端用java做? 参考技术B 不明所以!!!!!!!!!! 参考技术C 哦,我知道了.大家也都知道了

以上是关于JAVA中遍历JSONObject不能按原顺序遍历的主要内容,如果未能解决你的问题,请参考以下文章

android怎么遍历jsonobject

在Java中遍历HashMap时如何确保键的顺序不能改变? [复制]

Jquery+json输出的顺序能否按照原始顺序?

js遍历json对象顺序问题,使用for in遍历json对象发现排序了,和本来的顺序不一样,有啥解决办法

HashMap和JSONObject的问题

java foreach是不是能对jsonarray进行遍历