Json.Net 用到後面,我們免不了有時會要 Custom Converter 去做序列化的客製動作。
使用 Json.Net 要做自定義序列化,我們可以 Custom Json.Net 的 Converter,為此需要建立一個 Converter 類別,將之繼承自 JsonConverter,接著將繼承而來的方法實作即可。
CanConverter 用來決定該型別是否可被該 Converter 處理、WriteJson 用來序列化物件、ReadJson 用來解序列化物件。
像是我們可以像下面這樣做個簡易的 Converter,裡面只是單純的將物件序列化與解序列化。
1 | using System; |
當我們在序列化物件時,若物件的成員屬性是 Interface,就可以用來指定序列化與解序列化時實際所要用的型態。
1 | [JsonConverter(typeof(ConcreteTypeConverter<DecisionNode[]>))] |
或者是像下面這段用來處理 Dictionary 的序列話與解序列化的 Converter 程式,裡面會用 JsonWriter 去處理序列化的動作、用 JsonReader 去處理解序列化的動作,寫起來比較複雜些,但可進行比較進階的處理。
1 | using System; |