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

本文介绍了如何使用fastjson在字段名与JSON字符串中的key不一致时进行反序列化。通过@JSONField注解或者改写set方法,可以将JSON中的"name12"值正确赋给bean的"name"属性,保持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);
    }
}

输出结果为:

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

 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;
    }
}

完结!!!!
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值