阿里FastJson指定序列顺序解决属性值丢失问题

发布于 2019-03-28  29 次阅读


使用包

阿里的FastJson 版本号为当前最新版本:1.2.56

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.56</version>
</dependency>

问题描述

在使用FastJson时,序列化对象会按照字母顺序重新拍,不方便对照查看。
一般的做法是对每个字段添加注解来指定序列时的顺序

@JSONField(ordinal = 1)
private int data;

这样做序列化(对象->Json字符串)时是没有问题的。
但当我们需要反序列化(Json字符串->对象)时,使用JSON.toJavaObject(JsonObject, MyClass.class)方法,该字段的数据就会丢失。
表现情况数值为0,对象为null。

解决方案

目前已经在Gayhub上面提交了Issues,等待回复解决。
查看其他的Issues,当前可以对实体类添加注解来取消序列化时按照字母排序,也算实现了要求。
只是感觉有些不爽,毕竟丢数据这个问题不应该发生在使用量这么大的包上。

@JSONType(alphabetic=false)
public class MyClass {
}

Comments


来自像素世界的代码家,创造第九艺术!