fastjson2 icon indicating copy to clipboard operation
fastjson2 copied to clipboard

fastjson tojsonString 序列化对象顺序被打乱

Open navinumber1 opened this issue 1 year ago • 7 comments

不想使用注解@JSONField 方式在字段上面, 因为字段很多很麻烦 SerializeConfig 中有方法可以处理这种方式 或者SerializerFeature可以处理吗? 使用的版本是 com.alibaba:fastjson:1.2.15

navinumber1 avatar Mar 08 '23 02:03 navinumber1

对象字段的顺序是依赖编译器行为,这个是无法确定的

wenshao avatar Mar 14 '23 19:03 wenshao

但默认不应该是不打乱吗,我使用了hutool 的JSONUtil.toJsonStr 的方式是默认是不会打乱的, 或者其它序列化工具应该也不会打乱 被打乱是因为使用了hashmap吗 而不是使用LinkedHashMap吗?是这样的吗?还是我想的简单了

admincopm avatar Mar 15 '23 02:03 admincopm

确实搞不懂,一个升级这么久的产品,连个排序都有问题。加了@JSONType(alphabetic = false),更乱,也不是Java Bean定义顺序排序。本来使用的是Jackson,想换成fastjson2,发现有这么个大问题。

zhang20084 avatar Mar 19 '23 16:03 zhang20084

不应该打乱顺序的,原本的Feature.OrderedField在2版本无了

LCH7700 avatar Apr 04 '24 16:04 LCH7700

我看源码里面会通过字段名排序,能否加一个Feature控制走Java Bean定义的排序

bigdou-x avatar Jun 28 '24 12:06 bigdou-x

com.alibaba.fastjson2.writer.FieldWriter.compareTo(),toJSONString()会调用该方法排序,如果没配置ordinal则会根据字段名走String.compareTo方法进行排序,是否可以增加一个Feature走JavaBean定义排序

bigdou-x avatar Jul 01 '24 01:07 bigdou-x

fastjson也是治标不治本的办法

fastjson https://github.com/alibaba/fastjson/issues/3115#issuecomment-768216153

fastjson2是该也要加个了,issue都这么久了

cloudlessa avatar Sep 11 '24 11:09 cloudlessa