【FastJson】fastjson序列化保持字段顺序
1.概述
转载:
在使用 fastjson 将对象序列化成字符串时,发现字段顺序乱了,百度搜了一下,发现原因是将字符串反序列化(即转成JSON对象)时,被默认规则处理了。如果不想使用默认规则,就需要我们指定需要的规则,这里我们可以使用 Feature.OrderedField 来使其保持原有字段顺序。例如:
System.out.println(jsonString); // 默认 JSONObject jsonObject = JSON.parseObject(jsonString); // 修改后 JSONObject jsonObject = JSON.parseObject(jsonString, Feature.OrderedField); String string= JSON.toJSONString(jsonObject); System.out.println(string);
我直接去看了下 JSON.parseObject 方法,我猜测字段顺序不一致就是被默认的这个规则影响的:Feature.SortFeidFastMatch ,字面意思就是 以最快速度为字段进行排序。
即:
System.out.println(jsonString); // 默认 JSONObject jsonObject = JSON.parseObject(jsonString); // 即上面默认处理 相当于 JSONObject jsonObject = JSON.parseObject(jsonString, Feature.SortFeidFastMatch);
