由于fastjson.toJSONString默认按字符字母排列顺序输出的,在有些特殊场景下可能不满足我们的要求,需要定制。
官方文档中提到自定义序列化有三中方式,需要1.1.42以上版本才支持:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.35</version>
</dependency>
1、使用@JSONField配置
可以把@JSONField配置在字段或者getter/setter方法上,其中ordinal参数即顺序,值越小越靠前。例如:
public class VO {
@JSONField(ordinal = 1, name = "ID")
private int id;
@JSONField(ordinal = 2)
private String name;
}
或者
public class VO {
private int id;
@JSONField(name="ID")
public int getId() { return id;}
@JSONField(name="ID")
public void setId(int value) {this.id = id;}
}
2、使用@JSONType配置
和JSONField类似,但JSONType配置在类上,而不是field或者getter/setter方法上。
@JSONType(orders:{"id","name"})
public class VO {
private int id;
private String name;
}