2011-05-04 66 views
17

我試圖編寫一個自定義的JsonConverter,用於某個人子類化一個列表或集合,但然後向該子類添加額外屬性的情況(請參閱here)。 JSON.NET的當前實現只是將列表更改爲一個子對象數組,並忽略所有添加的屬性。所以我想寫一個新的JsonConverter對待對象,就像它不是一個List並只是序列化一切正常,但然後在序列化中添加一個名爲'_Items'的新屬性,其中實際的數組數據被存儲。JSON.NET中使用的默認JsonConverter是什麼?

現在我已經寫了一個類來完成這個特定的List子類,但我必須手動指定所有的屬性。但如果我可以寫一個轉換器,把它當作一個普通對象來處理,然後手動處理這些項目,我就會變成黃金。我甚至不關心我是否會複製另一班的一半(甚至更多!),但我很樂意爲這些情況製作一個可重用的轉換器。但是,正如我所說的,我無法找到默認轉換器。

所以......任何人都知道這是哪裏?

回答

8

JSON.NET中沒有'默認轉換器'。

如果您能夠檢查JsonSerializerInternalWriter課程,請參閱SerializeValue方法。其中,頂部有'轉換器查找和執行'階段。但是,如果沒有匹配的轉換器,它會使用合同類型序列化(switch語句)。我還沒有找到一種方式(一種正確的方式或一個優雅的黑客),以便能夠在一個實體上執行一個通用合約序列化(例如:正常解析一個對象)和一個擴展的自定義序列化(我假設你正在嘗試做)。