@JSONField 解决json字符串转对象,对象属性名与json中key不一致,如何接收数据问题

当Java对象的属性名与JSON键不一致时,通过在setter方法上使用@JSONField注解可以实现映射,确保数据正确接收。例如,创建一个包含name、hobby和age属性的对象,接收key为name2、hobby2和age2的JSON字符串,转化后能成功将JSON数据映射到对象相应属性。

背景:
我有个对象,过来个json,
想用这个对象接收json中的值,对象中属性名与json中key值不一致

实现:
这个时候@JSONField注解就派上用场了,不能直接放在属性上,要放在set方法上

模拟:

1、 搞个对象,属性名分别为name,hobby,age,

@Data
public class PandaContentx {

    private String name;

    private String hobby;

    private int  age;

    public String getName() {
        return name;
    }

    @JSONField(name = "name2")
    public void setName(String name) {
        this.name = name;
    }

    public String getHobby() {
        return hobby;
    }

    @JSONField(name = "hobby2")
    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

    public int getAge() {
        return age;
    }

    @JSONField(name = "age2")
    public void setAge(int age) {
        this.age = age;
    }
}

2、传过来的json串: key 值分别是 name2、 hobby2、age2

[
    {
        "name2":"panda",
        "hobby2":"kongfu",
        "age2":18
    }
]

3、转化:json字符串转对象

String jsonStr ="[{\"name2\":\"panda\",\"hobby2\":\"kongfu\",\"age2\":18}]";
JSONArray jsonArray = JSONArray.parseArray(jsonStr);
List<PandaContentx> list = jsonArray.toJavaList(PandaContentx.class);
System.out.println(list.get(0).toString());

4、结果:所有值都接到了

PandaContentx(name=panda, hobby=kongfu, age=18)

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值