如何解决fastJson无序问题?

当使用fastJson解析Json到Map时,可能会遇到顺序不一致的问题。这通常是由于fastJson内部处理导致的。为了解决这个问题,可以在解析时设置Feature.OrderField,通过这个特性可以确保Map的顺序不会被改变。具体的实现代码可以在com.alibaba.fastjson.parser.DefaultJSONParser的475行找到。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在开发过程中,遇到过一种一开始觉得很莫名其妙的情况——在将json解析成一个map的时候,会出现顺序颠倒的情况,虽然数据读取和存储都没有出错,但是顺序的颠倒在开发中处理特定问题时也是一件很令人头疼的事情,那么为什么会出现这种情况,怎么避免出现这种情况呢?(解决方法来源于网络)

跟踪fastjson源码,在com.alibaba.fastjson.parser.DefaultJSONParser 类中475行发现


else if (ch == '{') { // 减少嵌套,兼容android  

lexer.nextToken();  

final boolean parentIsArray = fieldName != null && fieldName.getClass() == Integer.class;  

<span style="color: #ff0000;"><strong>JSONObject input = new JSONObject(lexer.isEnabled(Feature.OrderedField)</strong></span>);  

fastjson会进行Feature.OrderField的判断,如果在解析json的时候加上这一条属性,即可解决json解析后乱序的问题,具体代码如下:

HashMap m=  JSON.parseObject(json,LinkedHashMap.class,Feature.OrderedField);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值