2011-04-09 17 views
0

我的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類型之間進行轉換。有沒有人有這樣做,或者我必須通過字符串去?

回答

1

什麼是您的數據來源?

沒有用於將POJO序列化爲JSON的標準格式。 Java POJO的JSON表示與Ruby生成的不同。

因此除了手動處理之外別無選擇。

相關問題