gpt4 book ai didi

spring-boot - 没有创作者存在 : Cannot Deserialize

转载 作者:行者123 更新时间:2023-12-05 03:31:17 28 4
gpt4 key购买 nike

我收到一个错误...(不存在像默认构造函数这样的创建者):无法从对象值反序列化(没有基于委托(delegate)或基于属性的创建者),这表明我需要一个属性基于的创作者。我有几个具有不同参数但没有默认值的构造函数。

我的解决方案是添加默认构造函数 SomeClass() {}。我的问题是:为什么会这样?另外,什么是委托(delegate)/基于属性的构造函数?

最佳答案

如果没有使用 @JsonCreator 注释的构造函数,默认情况下,Jackson 需要一个默认的无参数构造函数,以便将 JSON 解析为 POJO 或 bean 类。这就是为什么当您添加默认构造函数时,它会正常工作。

如果你实际上不需要使用默认构造函数,只需为 Jackson 添加它,你可以将它设置为 privateprotected包保护。 Jackson 仍然能够通过反射填充所有字段。

关于no delegate- or property-based Creator,它们是用@JsonCreator注解的构造函数。在 Jackson 中,有两种类型的 Creator/JsonCreator,分别是 delegate-based Creatorproperty-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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com