【问题标题】:C# de-serialising JSON to various typesC# 将 JSON 反序列化为各种类型
【发布时间】: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


【解决方案1】:

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

JsonConvert.DeserializeObject<dynamic>(JSONtext)

【讨论】:

  • 谢谢,但我需要在不更改服务器的情况下执行此操作,并且无法使用 dynamic(使用 .net 3.5)
  • 那家伙提到他不能使用动态,因为他正在使用。净 3.5
猜你喜欢
  • 2012-10-01
  • 1970-01-01
  • 2021-06-02
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
相关资源
最近更新 更多