我有傳入的JSON數據的格式如下@JsonTypeResolver是解決使用多個屬性的唯一選擇嗎?
{
"header": {
"schema_id": {
"namespace": "omh",
"name": "physical-activity",
},
},
"body": {
"activity_name": "walking",
"distance": {
"value": 1.5,
"unit": "mi"
},
}
}
和相應的Java類,看起來像
public class DataPoint<T extends Measure> {
private DataPointHeader header;
private T body;
和
@JsonNaming(LowerCaseWithUnderscoresStrategy.class)
public class PhysicalActivity extends Measure {
private String activityName;
private LengthUnitValue distance;
我想傑克遜解決body
到PhysicalActivity
基於JSON文檔中的schema_id
類型,例如在僞
if schema_id.namespace == 'omh' && schema_id.name == 'physical-activity'
then return PhysicalActivity.class
我試着@JsonTypeIdResolver
這樣做,但如果我嘗試導航到header.schema_id.name
與@JsonTypeInfo
,例如
@JsonTypeInfo(use = JsonTypeInfo.Id.CUSTOM,
include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
property = "header.schema_id.name")
@JsonTypeIdResolver(DataPointTypeIdResolver.class)
public abstract class Measure {
我得到一個missing property: 'header.schema_id.name'
錯誤。即使我可以,我也不認爲我可以對namespace
和name
屬性做出決定。
除了從頭開始搭建@JsonTypeResolver
之外,有沒有一種理智的方式來做到這一點?
謝謝!我會仔細檢查併發布反饋。 –
我剛剛意識到它沒有檢查並消耗字段後的最終對象,我只在獨立文檔上測試它 – araqnid