如何解决fastJson无序问题

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

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

else if (ch == '{') { // 减少嵌套,兼容android    
  
lexer.nextToken();    
  
final boolean parentIsArray = fieldName != null && fieldName.getClass() == Integer.class;    
  
JSONObject input = new JSONObject(lexer.isEnabled(Feature.OrderedField)); 

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

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

你可能感兴趣的:(java)