【发布时间】:2015-01-08 09:46:42
【问题描述】:
我目前正在开发一个通过 JSON 与 node.js 服务器通信的 c# 应用程序。我正在使用Json.net 进行反序列化。
我的问题是 JSON 消息有多种类型(直到消息进来才知道是哪一种),我需要根据消息的类型反序列化为正确的类型。
有没有一种优雅的方法来解决这个问题?我想到的可能(非理想)解决方案包括某种“包罗万象”的消息 DTO 类型,任何消息都可以反序列化为(不是好的);或某种“消息中的消息”,其中消息类型标识符被反序列化,然后子消息被反序列化为特定类型,但我觉得必须有更好的方法。
我仅限于 .Net 3.5,所以不能使用 dynamic 关键字。
谢谢
【问题讨论】:
-
您可以从 node.js 向客户端发送某种形式的元组。第一项将是 json 本身,第二项可能是您需要反序列化的类的名称。在客户端,您可以使用反射从名称或其他内容中获取类型。
-
@haim770 - 谢谢!这对我很有用(解决问题的 json.net 解决方案)。现在不知道如何处理这个问题。如果您想在这些方面添加一个简短的通用答案,我很乐意接受。
标签: c# json json.net deserialization json-deserialization