@JsonField使用
序列化和反序列化使用
序列化serializerUsing
@JsonField(serializeUsing = YYYYMMDDTranFerIntegerSerializer.class)
private Integer createTime;
类YYYYMMDDTranFerIntegerSeriazer需要实现接口
public class YYYYMMDDTranFerIntegerSerializer implements ObjectSerializer {
@Override
public void write(JSONSerializer serializer, Object object, Object fileName, Type fileType, int features) throws IOException {
//转为Integer类型
Integer integer = (Integer) object;
//把Integer类型转为String
String value = String.valueOf(integer);
serializer.write(formatDay(value));
}
/**
* 格式化指定数据
* @param value
* @return
*/
private String formatDay(String value) {
return value.substring(0, 4) + "-" + value.substring(4, 6) + "-" + value.substring(6);
}
}
单元测试
@Test
public void testSerizalizer(){
Student student = new Student();
student.setCreateTime(20201113);
System.out.println(JSONObject.toJSONString(student));
}
输出结果(按照指定格式进行序列化了)
{“createTime”:“2020-11-13”}
对象的反序列化
YYYYMMddTransferIntegerDeserializer
@JSONField(serializeUsing = YYYYMMDDTranFerIntegerSerializer.class,
deserializeUsing = YYYYMMddTransferIntegerDeserializer.class)
private Integer nFillDate;
实现接口
public class YYYYMMddTransferIntegerDeserializer implements ObjectDeserializer {
@Override
public Integer deserialze(DefaultJSONParser parser, Type type, Object fileName) {
String object = parser.parseObject(String.class);
//反序列化
return deserialize(object);
}
private Integer deserialize(String result) {
String str = result.replace("-", "");
//把字符串转为Integer
return NumberUtils.toInt(str);
}
@Override
public int getFastMatchToken() {
return 0;
}
}
单元测试
@Test
public void testDescSerizalizer(){
Student student = new Student();
student.setCreateTime(20201113);
String result = JSONObject.toJSONString(student);
System.out.println("序列化之后的json类型格式--->"+result);
//反序列化
Student object = JSONObject.parseObject(result, Student.class);
System.out.println("反序列化之后-->"+object.getCreateTime());
}
测试结果输出
序列化之后的json类型格式—>{“createTime”:“2020-11-13”}
反序列化之后–>20201113