Exception in thread “main“ com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecog

使用ObjectMapper对json字符串反序列化对象时,由于字符串中 多了一个字段,使用readValue方法时会报错,

报错演示:

public static void main(String[] args) throws JsonProcessingException, InterruptedException {
       readModel();

        System.out.println("---------22222222222222222-----------");

    }

    private static void readModel() throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
//        String str = "{\"name\":\"zz\",\"age\":\"55\"}";
//        String str = "{\"name\":\"zz\"}";
        String str = "{\"name\":\"zz\",\"age\":\"55\",\"sex\":\"55\"}";
// 注释配置就会报错
//        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        MyUser myUser = objectMapper.readValue(str, MyUser.class);
//        MyUser myUser = JSON.parseObject(str, MyUser.class);
        System.out.println(
                myUser
        );
    }

报错提示

Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "sex" (class com.test.MyUser), not marked as ignorable (2 known properties: "name", "age"])
 at [Source: (String)"{"name":"zz","age":"55","sex":"55"}"; line: 1, column: 32] (through reference chain: com.test.MyUser["sex"])
	at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
	at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:855)
	at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1212)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1604)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1582)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:299)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:156)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4526)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3468)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3436)

解决方案:

需要加一行配置 

objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

完整:

ObjectMapper objectMapper = new ObjectMapper();
        String str = "{\"name\":\"zz\",\"age\":\"55\",\"sex\":\"55\"}";
       objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        MyUser myUser = objectMapper.readValue(str, MyUser.class);

        System.out.println(myUser);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值