如何解决fastJson无序问题?

来源:互联网 发布:多益网络web前端笔试 编辑:程序博客网 时间:2024/05/10 21:13


在开发过程中,遇到过一种一开始觉得很莫名其妙的情况——在将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);


 

原创粉丝点击