fastjson解决反序列化字符串和bean字段不一致时如何反序列化

一、首先我们来看一下正常的反序列化的用法,我们有一个Person类:

1、Person类:

@Data
class Person{
    String name;
    int age;
}

下面通过一个字符串反序列化成一个java对象;

public class Test {

    public static void main(String[] args) {
        String str = "{\n" +
                "\t\"name\" :\"ck\",\n" +
                "\t\"age\":15\n" +
                "}";

        Person person = JSONObject.parseObject(str, Person.class);
        System.out.println(person);
    }
}

输出结果为:
fastjson解决反序列化字符串和bean字段不一致时如何反序列化_第1张图片

但是加入说你这个要序列化的字符串是别人给你的,是这样的格式:

 String str = "{\n" +
                "\t\"name12\" :\"ck\",\n" +
                "\t\"age\":15\n" +
                "}";

那么你肯定不能指望反序列化的对象name属性还是等于ck,事实证明它是null,假入说你不想改变你的bean的属性名称又想将name12的值反序列化给name,那么怎么办呢?这时候你就可以用@JSONField注解了,具体如下:


@Data
class Person{
    @JSONField(name = "name12")
    String name;
    int age;
}

如果你不想用上面注解的方式,那么你可以改写set方法,像下面这样也是可以实现的:

@Data
class Person{
    String name;
    int age;
    
    public void setName12(String name){
        this.name = name;
    }
}

完结!!!!
 

你可能感兴趣的:(java基础)