我是靠谱客的博主 激情路人,最近开发中收集的这篇文章主要介绍Jackson 处理is开头的字段,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、场景

public class Result {
private boolean isSuccess;
public boolean isSuccess() {
        return isSuccess;
    }

    public void setSuccess(boolean success) {
        isSuccess = success;
    }

模型中有形如以上以is开头的字段,使用idea自动生成的get、set方法如上。此时,如果用Jackson序列化或者反序列化这个类时会出现以下问题

序列化

String input = "{"isSuccess":true}n";
Result b = mapper.readValue(input, Result.class);
System.out.println(b.toString());

问题1:测试结果:Jackson报错,因为无法识别isSuccess这个字段,Jackson按照get、set方法识别的是success字段;

问题2:在问题1的基础上,有时候我们会使用这个注解来忽略无法识别的字段@JsonIgnoreProperties(ignoreUnknown = true),这时候就会出现,无论你传进来的isSuccess是true还是false,反序列化后,你得到的Result里的isSuccess始终都是false,这是因为这个false实际上是类的初始化值,实际上这个isSuccess被忽略了,所以是赋值的默认值false

@JsonIgnoreProperties(ignoreUnknown = true)
public class Result {

 

二、解决方案

2.1 尽量避免使用is开头的字段

2.2 修改get、set方法(不用idea自动生成的)

public boolean getIsSuccess() {
        return isSuccess;
    }

    public void setIsSuccess(boolean success) {
        isSuccess = success;
    }

 

三、参考文献

https://stackoverflow.com/questions/32270422/jackson-renames-primitive-boolean-field-by-removing-is

转载于:https://my.oschina.net/Cubicluo/blog/1814186

最后

以上就是激情路人为你收集整理的Jackson 处理is开头的字段的全部内容,希望文章能够帮你解决Jackson 处理is开头的字段所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部