Java 在Jackson中反序列化基于数组的多态json
我有一个包含子对象的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 =
[
["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,它不适用于属性
,可能应该引入自定义序列化器/反序列化器。