fastjson中JSONObject遍历怎么不是有序的
fastjson中JSONObject 使用keySet和entrySet进行遍历,发现顺序是乱序的,执行几次,遍历结果每次顺序都不一样,fastjson不是默认排序的吗?怎么才能按排序遍历出来
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
fastjson中JSONObject 使用keySet和entrySet进行遍历,发现顺序是乱序的,执行几次,遍历结果每次顺序都不一样,fastjson不是默认排序的吗?怎么才能按排序遍历出来
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(16)
这个好像只能用于javabean的序列化啊,我是编辑jsonObject再toString时无序,这个方法貌似不适用。不过我发现fastjson已经支持指定使用LinkedHashMap了,可以看我的回答
这里有说明:
使用ordinal指定字段的顺序
https://github.com/alibaba/fastjson/wiki/JSONField
Json原生的解释里有这么一说:
JSON
Object是无序的,即put进去或者new JsonObject(String jsonString),这样产生的Json对象都是无序的。而JSONArray是有序的,如果需要搞成有序的,直接用数组即可,可以是如下格式:拼凑为类似[{key,value},{
key,value
},{
key,value
}...],就是有序的了。但会麻烦些,如果需要有序的,还是得去看源码!直接在源码基础上修改。
发现fastjson已经支持指定使用LinkedHashMap了,可以看我的回答
引用来自“zcool321”的评论
我也遇到相同的问题了~!~改成LinkedHashMap依然不行~toString后数据顺序还是被修改了
你好 你这lv2泛型是啥?
我也遇到相同的问题了~!~改成LinkedHashMap依然不行~toString后数据顺序还是被修改了
回复
自定义的对象啊。好比 一个class Student 有属性 name 和 age 。
晕死,11年到14年,这问题还没解决,太不负责任了。
这样搞,就OK,不用修改源码了。
不行,申明为linkedHashMap转为json后仍然会变为无序的
@黄正文 json内部用的hashmap吧
直接把你待解析的hashMap对象声明为LinkedHashMap类型不就行了?
一定要改原码么?
修改org.json.JSONObject的构造函数,
public JSONObject() {
this.map = new LinkedHashMap(); //new HashMap();
}
原文连接:http://blog.csdn.net/choclover/article/details/6684954
@鉴客 @wenshao 求教,要怎么才能是按排序遍历出来,谢谢!