C#将JSON反序列化为各种类型

C#将JSON反序列化为各种类型,c#,json,json.net,deserialization,json-deserialization,C#,Json,Json.net,Deserialization,Json Deserialization,我目前正在开发一个c#应用程序,它通过JSON与node.js服务器通信。我用它来做反序列化 我的问题是JSON消息的类型多种多样(在消息传入之前不知道是哪种类型),我需要根据消息的类型反序列化到正确的类型。 是否有一种优雅的方法来解决这个问题?我遇到的可能(非理想)解决方案包括某种“所有编码”消息数据类型,任何消息都可以反序列化到该类型(不好);或者某种“消息中的消息”,其中消息类型标识符被反序列化,然后子消息被反序列化为特定类型,但我觉得一定有更好的方法 我仅限于.NET3.5,因此不能使用

我目前正在开发一个c#应用程序,它通过JSON与node.js服务器通信。我用它来做反序列化

我的问题是JSON消息的类型多种多样(在消息传入之前不知道是哪种类型),我需要根据消息的类型反序列化到正确的类型。

是否有一种优雅的方法来解决这个问题?我遇到的可能(非理想)解决方案包括某种“所有编码”消息数据类型,任何消息都可以反序列化到该类型(不好);或者某种“消息中的消息”,其中消息类型标识符被反序列化,然后子消息被反序列化为特定类型,但我觉得一定有更好的方法

我仅限于.NET3.5,因此不能使用
dynamic
关键字


谢谢

节点服务器必须在每个响应上发送json类型。另一种解决方案是以这种方式使用动态类型:

JsonConvert.DeserializeObject<dynamic>(JSONtext)
JsonConvert.DeserializeObject(JSONtext)

Check您可以从node.js向客户端发送某种形式的元组。第一项是json本身,第二项是需要反序列化的类的名称。在客户端,您可以使用反射从名称或其他内容获取类型。@haim770-谢谢!这对我来说非常有效(这是一个json.net解决方案)。现在不知道该怎么处理这个问题。如果您想添加一个简短的通用答案,我很乐意接受。谢谢,但我需要在不更改服务器的情况下执行此操作,并且不能使用
动态
(坚持使用.net 3.5)。这家伙提到他不能使用动态,因为他正在使用。净额3.5