fastjson 自定义序列化、反序列化
*******************
相关类与接口
ObjectSerializer
public interface ObjectSerializer {
void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException;
}
ObjectDeserializer
public interface ObjectDeserializer {
<T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName);
int getFastMatchToken();
}
*******************
示例
CustomSerializer:序列化类
public class CustomSerializer implements ObjectSerializer {
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
serializer.write("gtlx "+object);
}
}
CustomDeserializer:反序列化类
public class CustomDeserializer implements ObjectDeserializer {
@Override
@SuppressWarnings("unchecked")
public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
if (type.getTypeName().contains("String")){
String text=(String)parser.parse(fieldName);
return (T)("hello "+text.split(" ")[1]);
}
return (T)parser.parse(fieldName);
}
@Override
public int getFastMatchToken() {
return 0;
}
}
Test3:测试类
@Data
class Student{
private String id;
@JSONField(serializeUsing = CustomSerializer.class,deserializeUsing = CustomDeserializer.class)
private String name;
private Integer age;
}
public class Test3 {
public static void main(String[] args){
Student student=new Student();
student.setId("2");
student.setName("瓜田李下");
student.setAge(20);
String jsonString=JSON.toJSONString(student);
System.out.println(jsonString);
Student s=JSON.parseObject(jsonString,Student.class);
System.out.println(s);
}
}
***************
控制台输出
{"age":20,"id":"2","name":"gtlx 瓜田李下"}
Student(id=2, name=hello 瓜田李下, age=20)