- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我收到一个错误...(不存在像默认构造函数这样的创建者):无法从对象值反序列化(没有基于委托(delegate)或基于属性的创建者)
,这表明我需要一个属性基于的创作者。我有几个具有不同参数但没有默认值的构造函数。
我的解决方案是添加默认构造函数 SomeClass() {}
。我的问题是:为什么会这样?另外,什么是委托(delegate)/基于属性的构造函数?
最佳答案
如果没有使用 @JsonCreator
注释的构造函数,默认情况下,Jackson 需要一个默认的无参数构造函数,以便将 JSON 解析为 POJO 或 bean 类。这就是为什么当您添加默认构造函数时,它会正常工作。
如果你实际上不需要使用默认构造函数,只需为 Jackson 添加它,你可以将它设置为 private
,protected
或 包保护
。 Jackson 仍然能够通过反射填充所有字段。
关于no delegate- or property-based Creator
,它们是用@JsonCreator
注解的构造函数。在 Jackson 中,有两种类型的 Creator/JsonCreator,分别是 delegate-based Creator
和 property-based Creator
。
Delegate-based creators take just one argument, which is NOT annotated with @JsonProperty. Type of that property is used by Jackson to bind the whole JSON value (JSON Object, array or scalar value), to be passed as value of that one argument.
Property-based creators take one or more arguments; all of which MUST be annotated with @JsonProperty, to specify JSON name used for property. They can only be used to bind data from JSON Objects; and each parameter represents one property of the JSON Object; type of property being used for binding data to be passed as that parameter when calling creator.
您可以在下面的文章中阅读有关这 2 位创作者的更多详细信息。 http://www.cowtowncoder.com/blog/archives/2011/07/entry_457.html
关于spring-boot - 没有创作者存在 : Cannot Deserialize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70690443/
我是一名优秀的程序员,十分优秀!