我有一個父類,比如P類和三個子類,比如C1,C2和C3。我在P類中有一個type
變量來確定子類的類型。我有一個包含多個C1,C2和C3實例的P矢量,並使用Gson庫將該矢量對象轉換爲JSON。當我重建從JSON向量使用Gson給予類型爲向量<P>(我使用TypeToken的那個)我得到一個類P的向量,但是當我把P對象投給任何子類時,取決於type
變量我得到ClassCastException。我怎樣才能做到這一點,無一例外?從JSON重建子對象
Type t = new TypeToken<Vector<P>>() {}.getType();
Vector ps=(Vector<P>)gson.fromJson(jsonString,t);
for(P pObj : ps) {
if(pObj.type == 1) {
C1 cObj=(C1)pObj;
}
else if(pObj.type == 2) {
C2 cObj=(C2)pObj;
}
else if(pObj.type == 3) {
C3 cObj=(C3)pObj;
}
}
發表一些代碼 –
我不是Gson,但我使用simplejson。無論如何,我對這種代碼的經驗表明,json對象解組總是以這種方式給我們java對象。所以我通常使用List to Array並使用那些對象。在JavaScript中,因爲對象是無類型的,所以這些類型的代碼運行良好。 –