json在繼承關係當中的反序列化

2021-07-30 15:17:25 字數 1035 閱讀 9828

當收到子類的json字串的時候,如果用父類來進行反序列化,那就會出現資料丟失的情況。具體如下:

family包含有child,child有兩個子類,乙個是son,另乙個是daughter。

當收到的json字串為

}時,此時用family去反序列化,」girlfirendname」:」小紅」 資訊會丟失。

這是因為在family當中只包含有child類,因此在反序列化的時候,就會用使用child類,而child類當中並沒有girlfriendname資訊,因此這段資訊就會被丟棄。

自定義反序列化類。

child、son、daughter類都只包含有乙個字段比較簡單,這裡直接略過,需要注意的是,child、son、daughter都要包含有無參建構函式,否則解析會出現異常。

來看看family類。

使用的是jackson包進行反序列化。

@jsondeserialize(using = family.familydeserializer.class)

public

class family

public child getchild()

public

void

setchild(child child)

//自定義反序列化類

public

static

class familydeserializer extends jsondeserializer

}family family = null;

if(childnode != null)else

}return family;}}

}

首先使用@jsondeserialize標籤來指定自定義反序列化的類,然後編寫反序列化函式。當json中包含有「boyfriendname」欄位時,就呼叫daughter類來反序列化;否則就呼叫son類來反序列化。

json在繼承關係當中的反序列化

當收到子類的json字串的時候,如果用父類來進行反序列化,那就會出現資料丟失的情況。具體如下 family包含有child,child有兩個子類,乙個是son,另乙個是daughter。當收到的json字串為 時,此時用family去反序列化,girlfirendname 小紅 資訊會丟失。這是因為...

JSON反序列的問題原因查詢

最近在弄乙個ajax的功能,資料量可能比較大,json也相對複雜,有時候處理的時候就會報錯。如下圖所示 這個錯誤是在反序列json為物件的時候報的,一直以為是類沒有寫無引數的建構函式。後來查了一下傳過來的json的字串才發現是乙個屬性弄錯了。本來是乙個字元型的屬性,而傳進來的json變成了乙個物件,...

JSON的序列化和反序列化

今天看了好多關於解析json的例子,但是都不全,而且還要自己找dll,於是自己寫了乙個全的json解析類,供以後參考 下面給出乙個要解析的字串 str str 1 解析json的工具類如下 1 在專案中新增引用 newtonsoft.json.dll,見附件 using system using s...