Spring Boot:JSON反序列化不适用于getter / setters

时间:2017-03-27 05:39:20

标签: java json spring spring-boot jackson

编辑

我创建了一个简单的ObjectMapper并告诉它将json映射到对象。它抛出了杰克逊反序列化的错误

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段

该应用程序显然正在吞咽然后继续。我知道必须解决为什么我的字段名都被赋予小写的第一个字母。

结束编辑

我正在使用Spring Boot,我正在通过网络以远程应用程序的JSON格式发送一个对象。我检查“数据包”,我看到所有对象的数据都应该是NULL。这些字段都是私有的,但可以通过getter和setter访问。

我尝试创建一个虚拟DTO对象并发送它。在那里,我看到反序列化正常工作,并且当所有访问者都被标记为私有时,字段被正确设置。

如何在Spring Boot中指示Jackson找到相应的字段Getter并使用它来设置属性?

非常感谢任何帮助。

下面是我要发送的对象的图片,以及虚拟DTO对象。enter image description here

enter image description here

这是我的Rest Controller的顶部和被调用的方法。

enter image description here

最后,这是一个来自麻烦的类的片段,它没有被序列化,它是@Entity的变种。

enter image description here

1 个答案:

答案 0 :(得分:1)

失败的原因是双重的。首先,我在发送方有一些属性,它们没有映射到Java端的反序列化目标对象。其次,当NewtonSofts JSON转换器转换内容时,它会进行以下转换" String Name =>字符串名称"。这导致另一个错误,即Jackson转换器无法在JSON字符串中找到任何目标值。

解决方案是使用以下值修改我的application.properties文件:

spring.jackson.deserialization.fail-上未知的属性=假 spring.jackson.mapper.accept_case_insensitive_properties =真