fastjson @JSONField 自定义序列化、反序列化

落日映苍穹つ 2023-02-27 13:56 148阅读 0赞

fastjson 自定义序列化、反序列化

*******************

相关类与接口

ObjectSerializer

  1. public interface ObjectSerializer {
  2. void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException;
  3. }

ObjectDeserializer

  1. public interface ObjectDeserializer {
  2. <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName);
  3. int getFastMatchToken();
  4. }

*******************

示例

CustomSerializer:序列化类

  1. public class CustomSerializer implements ObjectSerializer {
  2. @Override
  3. public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
  4. serializer.write("gtlx "+object);
  5. }
  6. }

CustomDeserializer:反序列化类

  1. public class CustomDeserializer implements ObjectDeserializer {
  2. @Override
  3. @SuppressWarnings("unchecked")
  4. public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
  5. if (type.getTypeName().contains("String")){
  6. String text=(String)parser.parse(fieldName);
  7. return (T)("hello "+text.split(" ")[1]);
  8. }
  9. return (T)parser.parse(fieldName);
  10. }
  11. @Override
  12. public int getFastMatchToken() {
  13. return 0;
  14. }
  15. }

Test3:测试类

  1. @Data
  2. class Student{
  3. private String id;
  4. @JSONField(serializeUsing = CustomSerializer.class,deserializeUsing = CustomDeserializer.class)
  5. private String name;
  6. private Integer age;
  7. }
  8. public class Test3 {
  9. public static void main(String[] args){
  10. Student student=new Student();
  11. student.setId("2");
  12. student.setName("瓜田李下");
  13. student.setAge(20);
  14. String jsonString=JSON.toJSONString(student);
  15. System.out.println(jsonString);
  16. Student s=JSON.parseObject(jsonString,Student.class);
  17. System.out.println(s);
  18. }
  19. }

***************

控制台输出

  1. {"age":20,"id":"2","name":"gtlx 瓜田李下"}
  2. Student(id=2, name=hello 瓜田李下, age=20)

发表评论

表情:
评论列表 (有 0 条评论,148人围观)

还没有评论,来说两句吧...

相关阅读