我的C#應用程序接收需要反序列化爲強類型對象的JSON數據,但我需要在轉換過程中操作JSON屬性。理想情況下,我想對JSON對象圖進行反序列化,操作屬性,然後將生成的圖轉換爲.NET類型。然而,似乎沒有辦法這樣做,除非將修改後的圖形序列化回字符串,然後將該字符串反序列化爲.NET類型,這看起來很浪費。我可以從JSON對象圖轉換爲.NET類而不需要中間字符串轉換嗎?
一個例子可以解釋爲什麼這很有用。 Twitter的API發送ID列表中的以下形式:
{"ids": [1, 2, 3], "next_cursor": 0, "previous_cursor": 0}
它發送列表的列表以非常相似的形式:
{"lists": [...], "next_cursor": 0, "previous_cursor": 0}
的.NET等效的這明顯是一個CursorList <Ť>使用NextCursor,PreviousCursor和Contents屬性鍵入,其中內容爲IEnumerable <T>幷包含數組的反序列化內容。但是,標準的JSON反序列化器不能反序列化爲CursorList <T>,因爲JSON標籤因T而異。我想將該JSON反序列化到對象圖中,提取依賴於類型的屬性(id或列表,視情況而定be),並將其交給標準清單<T>反序列化過程。完成了創建對象圖的所有麻煩之後,在將序列化爲JSON字符串然後重新序列化到列表<T>之前,看到了一種恥辱。
我看過JSON.NET,System.Json和System.Web.ScriptSerialization.JavaScriptSerializer,但它們都不允許在JSON對象圖和.NET類型之間進行轉換。有沒有人有這樣做,或者我必須通過字符串去?