MappingJackson2HttpMessageConverter如何忽略未知属性?

SpringMVC的Controller接收JSON数据,可以用MappingJackson2HttpMessageConverter将JSON数据自动封装为对象,方便后续处理。当然,需要写一个与JSON对应的类。

示例:

// Controller
@Controller
@RequestMapping({"/api"})
class MyController {
    @RequestMapping(value = {"/test"}, method = {RequestMethod.POST})
    @ResponseBody
    public MyResponseBody test(@RequestBody MyRequestBody body) {
        System.out.println(body);
        retrun new MyResponseBody(0, "success");
    }
}

// MyRequestBody对象封装
class MyRequestBody {
    private int a;
    private String b;
    // 构造器略...
    // getters、settters 略... 
}

// MyResponseBody对象封装
class MyResponseBody {
    private int code;
    private String message;
    // 构造器略...
    // getters、setters 略... 
}

调用时传入JSON数据:

{
    "a": 1,
    "b": "hello tom!"
}

传入JSON的数据要与MyRequestBody的属性完全一致!

但是,实际使用中,要传入的JSON可能是用其他方式生成的(例如根据表单生成的,或者是旧的接口定义的JSON格式),并不能保证与后端的MyRequestBody完全一致,例如,JSON数据多了个时间戳:

{
    "a": 1,
    "b": "hello tom!",
    "timestamp": "1234567890"
}

这时,调用Controller会报错,大致意思是说MyRequestBody里没有timestamp属性!

这时,希望的结果是JSON转成MyRequestBody时能自动忽略这些未知的属性。

只需一步,为MyRequestBody类加上标注:
@JsonIgnoreProperties(ignoreUnknown = true)
即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值