fastjson中JSONObject遍历怎么不是有序的

发布于 2021-12-06 04:28:59 字数 103 浏览 819 评论 16

fastjson中JSONObject 使用keySet和entrySet进行遍历,发现顺序是乱序的,执行几次,遍历结果每次顺序都不一样,fastjson不是默认排序的吗?怎么才能按排序遍历出来

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(16

如此安好 2021-12-08 20:31:18

这个好像只能用于javabean的序列化啊,我是编辑jsonObject再toString时无序,这个方法貌似不适用。不过我发现fastjson已经支持指定使用LinkedHashMap了,可以看我的回答

你曾走过我的故事 2021-12-08 20:31:17

这里有说明:

使用ordinal指定字段的顺序

https://github.com/alibaba/fastjson/wiki/JSONField

笑红尘 2021-12-08 20:31:15

Json原生的解释里有这么一说:
JSON
Object是无序的,即put进去或者new JsonObject(String jsonString),这样产生的Json对象都是无序的。而JSONArray是有序的,如果需要搞成有序的,直接用数组即可,可以是如下格式:拼凑为类似[{key,value},{
key,value
},{
key,value
}...],就是有序的了。但会麻烦些,如果需要有序的,还是得去看源码!直接在源码基础上修改。

复古式 2021-12-08 20:31:15

发现fastjson已经支持指定使用LinkedHashMap了,可以看我的回答

别低头,皇冠会掉 2021-12-08 20:31:12

引用来自“zcool321”的评论

我也遇到相同的问题了~!~改成LinkedHashMap依然不行~toString后数据顺序还是被修改了

梅窗月明清似水 2021-12-08 20:31:11

你好 你这lv2泛型是啥?

情痴 2021-12-08 20:31:11

我也遇到相同的问题了~!~改成LinkedHashMap依然不行~toString后数据顺序还是被修改了

葬花如无物 2021-12-08 20:31:07

回复
自定义的对象啊。好比 一个class Student 有属性 name 和 age 。

冷清清 2021-12-08 20:31:06

晕死,11年到14年,这问题还没解决,太不负责任了。

冷清清 2021-12-08 20:31:06
public static Map<String, LinkedHashMap<String, Lv2>> parseData(String data)
	{
		
		try
		{
			return JSON.parseObject(data, new TypeReference< Map<String, LinkedHashMap<String, Lv2>>>(){});
		} catch (Exception e)
		{
			System.out.println(e);
		}
		
		return null;
	}

这样搞,就OK,不用修改源码了。

复古式 2021-12-08 20:29:34

不行,申明为linkedHashMap转为json后仍然会变为无序的

白龙吟 2021-12-08 20:29:30

@黄正文 json内部用的hashmap吧

终遇你 2021-12-08 20:24:10

直接把你待解析的hashMap对象声明为LinkedHashMap类型不就行了?

因为看清所以看轻 2021-12-08 20:04:29

一定要改原码么?

猫性小仙女 2021-12-08 05:35:40

修改org.json.JSONObject的构造函数,

public JSONObject() {

        this.map = new LinkedHashMap();  //new HashMap();

}

原文连接:http://blog.csdn.net/choclover/article/details/6684954

岁吢 2021-12-06 14:08:07

@鉴客 @wenshao 求教,要怎么才能是按排序遍历出来,谢谢!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文