解决FastJSON反序列化顺序问题

fastjson默认在序列化时是按照字段的字母顺序进行序列化的,这样序列化出来的Json数据中字段的顺序就与类中定义的字段顺序不一致了。默认按字母排序序列化的速度会快一些,但是有时候我们并不希望按照字母顺序进行序列化。

现在提供几种方式来支持自定义序列化顺序。

  1. 自己设置排序规则,通过JSONType的orders来指定排序规则:
    // 设置排序规则
    @JSONType(orders={"user_name","passwd"})
    public class LoginBean {
    // 设置别名user_name
    	@JSONField(name="user_name")
    	private String userName;	// 账户
    	private String passwd;	// 密码
    }
    
  2. 通过JSONField的ordinal来指定顺序,这个特性需要1.1.42以上版本
    public static class VO {
        @JSONField(ordinal = 3)
        private int f0;
    
        @JSONField(ordinal = 2)
        private int f1;
    
        @JSONField(ordinal = 1)
        private int f2;
    }
    
  3. 指定序列化的排序方式,使用Feature.OrderedField按照字段排序
    JSON.parseObject("...", Feature.OrderedField)
    
  4. 官方提供的方式是配置JSONType.alphabetic的值为false,但是好像不太好用
    @JSONType(alphabetic = false)
    public static class B {
        public int f2;
        public int f1;
        public int f0;
    }
    

欢迎扫码关注公众号,更好的交流
欢迎扫码关注公众号,更好的交流

发布了115 篇原创文章 · 获赞 67 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/meifannao789456/article/details/96828656