FastJsonfastjson序列化保持字段顺序

Posted 九师兄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FastJsonfastjson序列化保持字段顺序相关的知识,希望对你有一定的参考价值。

1.概述

转载:fastjson序列化保持字段顺序

在使用 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);

以上是关于FastJsonfastjson序列化保持字段顺序的主要内容,如果未能解决你的问题,请参考以下文章

Fastjson1.2.24 反序列化任意命令执行

Fastjson1.2.24 反序列化任意命令执行

如何在保持两个字段原始顺序的情况下打乱行?

使用 JSON.NET 的序列化字段的顺序

需要在保持熊猫或/和python中的顺序的同时对字母序列进行分组

Map转json数据出现顺序乱的问题