我有一個來自呼叫 Elastic Search 的 API 的 JSON 回應。以下是一個示例片段。
{
"fielda" : "something",
"hits" : {
"total" : "100",
"type" : "/some/type"
"dynamicAttributes":{
"somevalue1" : "somevalue",
"somevalue2" : "somevalue2"
}
}
}
每個結果下的 JSON 子樹dynamicAttributes可能不同。我正在嘗試根據傳入的type欄位將其編組為一個物件。該值與映射中某處的類之間將建立一個映射。LinkedHashMap如果型別未決議,杰克遜似乎會將結果映射到 a中。我正在尋找使用自定義反序列化器。這是最好的策略嗎?還是我缺少一些更簡單的東西。
uj5u.com熱心網友回復:
您可以使用@JsonTypeInfo和@JsonSubType注釋來編組給定的輸入。
在您的 dynamicAttributes 欄位上,您可以添加 JsonTypeInfo 注釋來指定如何創建 dynamicAttribute 的物件。該EXTERNAL_PROPERTY型別表示該type欄位存在于dynamicAttributes.
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property ="type", include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
visible = true)
DynamicAttributes dynamicAttributes;
要指定可能的子型別,請使用JsonSubTypes如下所示的注釋
@JsonSubTypes({
@JsonSubTypes.Type(value = DynamicAttributesType1.class, name = "type1")
, @JsonSubTypes.Type(value = DynamicAttributesType2.class, name = "type2")
})
public abstract class DynamicAttributes{
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/482304.html
上一篇:如果在方法內部或外部回圈
