alibaba / fastjson

FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.
https://github.com/alibaba/fastjson2/wiki/fastjson_1_upgrade_cn
Apache License 2.0
25.74k stars 6.5k forks source link

fastjson指定序列化顺序(@JSONField(ordina)解)不生效 #3666

Open angelyouyou opened 3 years ago

angelyouyou commented 3 years ago

JsonDemo.java为主程序,其中序列化了Routers4Boot和Routers4BootConfig类,发现即使在类上面加上了JSONField注解,依旧顺序是乱的。

com.alibaba fastjson **1.2.74**

testWriteJsonRouter()为序列化的函数。

对象: @Data @Getter @Setter public class Routers4Boot { @JSONField(ordinal = 1) private String routerDescr; @JSONField(ordinal = 2) private String flowIp; @JSONField(ordinal = 3) private String flowPort; @JSONField(ordinal = 4) private String flowSampleRate; } 序列化后: { "flowIp":"1.1.1.1", "routerDescr":"router1", "flowPort":"9999", "flowSampleRate":"5000" } Routers4BootConfig类也类似,附件中有源程序和序列化后的json文件。

json.zip

QTrouble commented 3 years ago

我也遇到相同的问题,使用JSON.toJSON序列化后的顺序不对,用JSON.toJSONString序列化后的顺序才是对的。 这是我前几天提交的issue: https://github.com/alibaba/fastjson/issues/3662

zhilaohu32 commented 3 years ago

我遇到的是JSONObejct.pares(String str)转换为JSONObject后顺序不一致,也不清楚是什么情况。按理说反序列不是应该保持一致吗?Gson就能正常的转换..