赞
踩
使用fastjson序列化时,可以在bean对象的属性上使用注解 @JSONField 做些序列化的规则,具体使用方法见参考资料。但有时候需要一些自定义化的序列化和反序列化方式,这时可以使用 serializeUsing 和 deserializeUsing 指定属性的序列化类和反序列化类
User bean定义,指定属性序列化和反序列化方式
public class User {
private String name;
@JSONField(serializeUsing = AgeVauleSerializer.class)
private int age;
private String desc;
/**
* 自定义date反序列化方式,注意序列化时也会被序列化成时间戳
* 也可以用format="yyyy-MM-dd HH:mm:ss"定义序列化格式
*/
@JSONField(deserializeUsing = TimestampValueDeserializer.class)
private Date date;
……
//get、set方法省略
AgeVauleSerializer 定义属性age的序列化方式。
public class AgeVauleSerializer implements ObjectSerializer {
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,
int features) throws IOException {
Integer value = (Integer) object;
String text = value + " year-old";
serializer.write(text);
}
}
TimestampValueDeserializer 定义属性date的反序列化方式。
public class TimestampValueDeserializer implements ObjectDeserializer {
@Override
public Date deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
long timestamp = parser.getLexer().longValue();
return new Date(timestamp);
}
@Override
public int getFastMatchToken() {
return 0;
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。