Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用外部_属性的Jackson多态性不使用kotlin默认值_Java_Spring_Spring Boot_Kotlin_Jackson - Fatal编程技术网

Java 使用外部_属性的Jackson多态性不使用kotlin默认值

Java 使用外部_属性的Jackson多态性不使用kotlin默认值,java,spring,spring-boot,kotlin,jackson,Java,Spring,Spring Boot,Kotlin,Jackson,入站请求属于MyRequestBody类型,例如 sealed class Entity data class Bacteria(val speciesName: String): Entity() data class Disease(val diseaseId: Long): Entity() enum class EntityType { MY_Bacteria, MY_Disease } data class MyRequestBody( val entityTy

入站请求属于
MyRequestBody
类型,例如

sealed class Entity
data class Bacteria(val speciesName: String): Entity()
data class Disease(val diseaseId: Long): Entity()

enum class EntityType {
    MY_Bacteria,
    MY_Disease
}

data class MyRequestBody(
  val entityType: EntityType,
  @JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,
        include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
        property = "entityType",
        defaultImpl = NoClass::class,
        visible = true
  )
  @JsonSubTypes(
        JsonSubTypes.Type(value = Disease::class, name = "MY_Disease"),
        JsonSubTypes.Type(value = Bacteria::class, name = "MY_Bacteria")
  )
  val entity: Entity? = null
)
实体
也可能丢失

{
  "entityType": "MY_Bacteria",
  "entity": {
    "speciesName": "E. Coli"
  }
}
我希望在
MyRequestBody
entity
字段上具有多态性。类型由同级字段
entityType
给出,可以是“我的细菌”或“我的疾病”,分别映射到
细菌
疾病


这个解决方案似乎不起作用。当请求正文中缺少
实体
(它没有使用默认值null)时,我不断收到一个400,其中包含消息“未能读取HTTP消息”。

您的请求中是否将
实体类型
设置为
我的疾病
我的细菌
?您可以发布您的请求JSON吗?^更新了postcan您可以尝试更新到属性吗?i、 e
include=JsonTypeInfo.As.PROPERTY
Yeah就是这样工作的(当JSON中缺少属性时使用默认值),但不适用于JsonTypeInfo.As.EXTERNAL_属性。奇怪。在这里打开了一个问题您的请求中是否将
entityType
设置为
MY_Disease
MY_Bacteria
?您可以发布您的请求JSON吗?^更新了postcan您可以尝试更新到属性吗?i、 e
include=JsonTypeInfo.As.PROPERTY
Yeah就是这样工作的(当JSON中缺少属性时使用默认值),但不适用于JsonTypeInfo.As.EXTERNAL_属性。奇怪,这里有个问题
{
  "entityType": "MY_Disease"
}