Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.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中反序列化基于数组的多态json_Java_Kotlin_Jackson - Fatal编程技术网

Java 在Jackson中反序列化基于数组的多态json

Java 在Jackson中反序列化基于数组的多态json,java,kotlin,jackson,Java,Kotlin,Jackson,我有一个包含子对象的json数组: [ ["t", 1, 2, 3], ["o", "a", "b"] ] 其中“t”和“o”是键,数组中的其他元素是数据值。 我想将这个数组反序列化为使用这些模型的类 @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_ARRAY) @JsonSubTypes( JsonSubTypes.Type(value = T::class, name =

我有一个包含子对象的json数组:

[
  ["t", 1, 2, 3],
  ["o", "a", "b"]
]
其中“t”和“o”是键,数组中的其他元素是数据值。 我想将这个数组反序列化为使用这些模型的类

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_ARRAY)
@JsonSubTypes(
    JsonSubTypes.Type(value = T::class, name = "t"),
    JsonSubTypes.Type(value = O::class, name = "o")
)
@JsonFormat(shape = JsonFormat.Shape.ARRAY)
sealed class A

data class T(val x: Int, val y: Int, val z: Int) : A()
data class O(val a: String, val b: String) : A()
当我这样做的时候

println(json.writeValueAsString(T(1, 2, 3)))
我收到

[ "t", [ 1, 2, 3 ] ]
如何将嵌套数组展平到外部数组

实际值:
[“t”,[1,2,3]]


应为:
[“t”,1,2,3]

这是有效的json@LppEdd你能详细说明一下吗?在这个问题上,我没有发现json有任何无效之处。@ErwinBolwidt我指的是第一个示例。但我还是错了。不要介意我的评论。我对{和[这正是
WRAPPER_ARRAY
所做的:“,一个2元素的JSON数组:第一个元素是序列化类型标识符,第二个元素是作为JSON对象的序列化POJO”。请尝试
PROPERTY
(不是答案,因为我现在无法检查它)@AlexeyRomanov,它不适用于
属性
,可能应该引入自定义序列化程序/反序列化程序。这是有效的json@LppEdd你能详细解释一下吗?在这个问题上,我看不出json有任何无效的地方。@ErwinBolwidt我指的是第一个例子。但无论如何我错了。不要介意我的评论。我得到了使用{and[这正是
包装数组
所做的:“一个2元素的JSON数组:第一个元素是序列化类型标识符,第二个元素是作为JSON对象的序列化POJO”。请尝试
属性
(不是答案,因为我现在无法检查它)@AlexeyRomanov,它不适用于
属性
,可能应该引入自定义序列化器/反序列化器。