我正在使用Quarkus 1.11.1和Kotlin 1.4.21以及Jackson 2.12.0。
我不明白为什么当我发送一个POST请求,其中包含一个定义了默认参数的数据类的主体时,这是不被接受的,并且返回一个错误问题:指定为非null的参数是null
在我的pom.xml文件中:
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jackson</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jackson</artifactId>
</dependency>
Quarkus文档说(https://quarkus.io/guides/kotlin#kotlin-和杰克逊):
如果已将com.fasterxml.jackson.module:jackson模块kotlin依赖项和quarkus jackson扩展(或quarkus resteasy扩展)添加到项目中,则quarkus会自动将kotlin模块注册到ObjectMapper bean(有关更多详细信息,请参阅本指南)。
我有一个数据类像:
data class MyAttributes
@BsonCreator constructor(
@BsonProperty("myId")
@JsonProperty("myId")
var myId: String,
@BsonProperty("name")
@JsonProperty("name")
val name: String,
@BsonProperty("data")
@JsonProperty("data", defaultValue = "{}")
var data: MutableMap<String, Any> = mutableMapOf()
)
我注意到@JsonProperty
注释中的defaultValue没有用处,因为它只用于记录期望值(https://fasterxml.github.io/jackson-annotations/javadoc/2.12/com/fasterxml/jackson/annotation/JsonProperty.html#defaultValue--)
如果我发送类似以下内容的JSON:
{
"myId": "AB123",
"name": "my attribute name"
}
我得到前面描述的错误,数据栏的默认值被忽略。如果我发送:
{
"myId": "AB123",
"name": "my attribute name",
"data": {}
}
我没有收到错误,因为我还发送了数据字段。
你能告诉我哪里做错了吗?
谢谢
你有默认的构造函数吗?默认情况下,jackson需要一个默认构造函数。这在数据类中并不常见,所以您可以提供构造函数,也可以这样做:
@Bean
fun objectMapper(): ObjectMapper = ObjectMapper()
.registerKotlinModule()
我在下面试过了,但它们不起作用 我检查了下面的链接:Kotlin等价于Java的字符串[]是什么? https://kotlinlang.org/docs/functions.html
在我的quarkus应用程序中有两个命名的数据源,我们称之为A和B: Quarkus.datasource.a.db-kind=Oracle Quarkus.datasource.b.db-kind=Oracle 因此,每次应用程序启动时,我都会收到这样的通知: 警告:无法确定默认数据源的数据库类型
问题内容: kotlin 1.2.10杰克逊模块kotlin:2.9.0 我在kotlin中有以下数据类: 当我尝试反序列化此数据类时,我得到以下信息: 如您所见,最后两个选项未正确反序列化。通过将注释直接添加到getter @get:JsonProperty,可以解决此问题。但是,根据杰克逊文档,@ JsonProperty应该分配给getters / setters / fields 因此,我
本文向大家介绍如何在MySQL ENUM数据类型中插入默认值?,包括了如何在MySQL ENUM数据类型中插入默认值?的使用技巧和注意事项,需要的朋友参考一下 我们可以借助ENUM数据类型的DEFAULT属性来实现。如果未指定值,则DEFAULT属性会使ENUM数据类型具有默认值。换句话说,我们可以说INSERT语句不必为此字段包含值,因为如果不包含该值,那么将插入DEFAULT之后的值。DEFA
kotlin 1.2.10 Jackson-Module-kotlin:2.9.0 根据下面的答案,下面的工作对我来说
本文向大家介绍如何在Java中使用Jackson来获取JSONParser默认设置?,包括了如何在Java中使用Jackson来获取JSONParser默认设置?的使用技巧和注意事项,需要的朋友参考一下 JSON Parser的 所有默认设置都可以使用JsonParser.Feature枚举来表示。该JsonParser.Feature.values()将返回所有可用的功能JSONParser