2015-01-08 52 views
3

我目前正在通過JSON與一個node.js服務器通信的c#應用程序。我正在使用Json.net進行反序列化。C#反序列化JSON到各種類型

我的問題是,JSON消息是各種類型的(不知道它是什麼,直到消息進來),我需要deserialise到正確的類型取決於它是哪種類型的消息。

有沒有一個優雅的方法呢?可能的(非理想的)解決方案包括某種'all encompasing'消息DTO類型,任何消息都可以被反序列化(不好);或某種類型的消息中的消息,其中消息類型標識符被反序列化,然後子消息被反序列化爲特定類型,但是我覺得必須有更好的方法。

我僅限於.Net 3.5,因此不能使用dynamic關鍵字。

謝謝

+0

檢查http://stackoverflow.com/a/ 19308474 – haim770

+0

您可以將某種形式的元組從node.js發送到客戶端。第一個項目是json本身,第二個項目可能是需要反序列化的類的名稱。在客戶端,您可以使用反射從名稱或其他名稱中獲取類型。 –

+0

@ haim770 - 謝謝!這對我來說很好(一個json.net解決方案)。不知道現在該怎麼處理這個問題。如果你想添加一個簡短的通用答案,我會很樂意接受它。 – UpTheCreek

回答

0

節點服務器必須在每次發送JSON類型response.the其他解決方案是使用在這樣的動態類型:

JsonConvert.DeserializeObject<dynamic>(JSONtext) 
+0

謝謝,但我需要做到這一點,而無需更改服務器,並且不能使用'dynamic'(堅持使用.net 3.5) – UpTheCreek

+0

這位傢伙提到他不能使用動態,因爲他正在使用。淨3.5 –