当前位置:   article > 正文

fastjson @JSONField 自定义序列化、反序列化_fastjson指定序列化和反序列化的别名

fastjson指定序列化和反序列化的别名

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)

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/982402
推荐阅读
相关标签
  

闽ICP备14008679号