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


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)

 

 


版权声明:本文为weixin_43931625原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。