2017-08-08 47 views
1

從服務器的JSON字符串看起來像下面(簡體)反序列化JSON不同的子類傑克遜通過特定的按鍵

{ 
    "p1":"v1", 
    "c1":{ 
     "a1":"string1", 
     "a2":"string2" 
     } 
} 

{ 
    "p1":"v2", 
    "c2":{ 
     "b1":"string3", 
     "b2":"string4" 
     } 
} 

是用傑克遜反序列化JSON字符串的方式類似於:

P類包含常見的響應信息(符號,狀態碼,狀態信息......) C1類和C2類擁有自己的特定業務數據

class P{ 
    String p1; 
} 
class C1 extend P{ 
    String a1; 
    String a2; 
} 
class C2 extend P{ 
    String b1; 
    String b2; 
} 

問題(簡體):

{"p1":"v1","c1":{"a1":"string1","a2":"string2"}}Class C1

{"p1":"v2","c2":{"b1":"string3","b2":"string4"}}Class C2

+0

那麼,你有什麼問題,而對C1/C2類上面的字符串進行除菌時,你會得到任何問題 –

+0

他的問題是(我猜)如果有可能轉換一個json兩個以上的對象?可能這有助於? https://stackoverflow.com/questions/22680630/how-to-use-jackson-objectmapper-to-convert-to-pojo-for-multiple-data –

回答

0

是的,你可以通過使用字段將指示提供的類類型中的每個對象轉換爲特定的類基類,如下圖所示

@JsonTypeInfo(
    use = JsonTypeInfo.Id.NAME, 
    include = JsonTypeInfo.As.PROPERTY, 
    property = "type") 
@JsonSubTypes({ 
    @Type(value = Car.class, name = "car"), 
    @Type(value = Truck.class, name = "truck") 
}) 
public class Vehicle { 
     private String type; //where type car for Car.class and truck for Truck.class 
    // fields, constructors, getters and setters 
}