杰克逊JSON解析错误-UnrecognizedPropertyException:无法识别的字段,未标记为可忽略[已解决]...

本文介绍了在Java中使用Jackson库解析JSON时遇到UnrecognizedPropertyException错误的解决方法。错误源于JSON字符串中的字段未在对应的Java类中定义。解决方案包括配置ObjectMapper忽略未知属性,或者在类上使用`@JsonIgnoreProperties`注解。文章还提供了示例代码和编译运行程序的指导。
摘要由CSDN通过智能技术生成

在解析从我们的一个RESTful Web服务接收到的JSON字符串时,我收到此错误“线程“ main”中的异常com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“人”(类Hello $ Person),不是标记为“可忽略”

经过一番研究,我发现这是在Java应用程序中使用Jackson开源库解析JSON文档时的常见错误之一。 错误消息说在我们的例子中,它找不到合适的属性名称“ person”,让我们首先看一下我们要解析的JSON,我们用来表示JSON文档的类和错误。消息本身。

错误信息:

Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:Unrecognized field "person" (class Hello$Person), not marked as ignorable (4 known properties: , "id", "city", "name", "phone"])

错误消息指出,它可以在Person类中找到ID,城市,名称和电话属性,但无法找到“ person”字段。

我们的POJO类如下所示:

class Person{

private int id;

private String name;

private String city;

private long phone;

.....

}

和JSON字符串:

{

"person": [

{

"id": "11",

"name": "John",

"city": "NewYork",

"phone": 7647388372

}

]

}

如果仔细看,“ person”字段指向JSON数组而不是对象,这意味着它不能直接映射到person类。

如何解决这个问题呢

以下是解决此问题并摆脱此错误的步骤:

1)配置encunger未知属性时,杰克逊的ObjectMapper不会失败

您可以通过禁用ObjectMapper的D eserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES属性来执行此操作,如下所示:

// Jackson code to convert JSON String to Java object

ObjectMapper objectMapper = new ObjectMapper();

objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

Person p = objectMapper.readValue(JSON, Person.class);

System.out.println(p);

现在,错误将消失,但是输出不是您期望的,它将输出以下内容:

Person [id=0, name=null, city=null, phone=0]

您可以看到Person类没有正确创建,即使JSON String包含其值,相关属性也为null。

原因是JSON String包含一个JSON数组 ,person字段指向一个数组,而Person类中没有对应于该字段的字段。

为了正确地解析JSON字符串,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值