【问题标题】:Can I convert from a JSON object graph to a .NET class without an intermediate string conversion?我可以在没有中间字符串转换的情况下从 JSON 对象图转换为 .NET 类吗?
【发布时间】:2011-08-02 00:19:04
【问题描述】:

我的 C# 应用程序接收需要反序列化为强类型对象的 JSON 数据,但我需要在转换期间操作 JSON 属性。理想情况下,我想反序列化为 JSON 对象图,操作属性,然后将结果图转换为 .NET 类型。但是,似乎没有办法做到这一点,除非将修改后的图序列化回字符串,然后将该字符串反序列化为 .NET 类型,这似乎很浪费。

一个例子可以解释为什么这是有用的。 Twitter API 以以下形式发送 id 列表:

{"ids": [1, 2, 3], "next_cursor": 0, "previous_cursor": 0}

它以非常相似的形式发送列表列表:

{"lists": [...], "next_cursor": 0, "previous_cursor": 0}

明显的 .NET 等效项是具有 NextCursor、PreviousCursor 和 Contents 属性的 CursorList 类型,其中 Contents 是 IEnumerable 并包含数组的反序列化内容。但是,标准 JSON 反序列化器无法反序列化为 CursorList 因为 JSON 标记因 T 而异。我想采用该 JSON,反序列化为对象图,提取依赖于类型的属性(ids 或列表视情况而定) be),并将其交给标准 List 反序列化过程。在创建对象图的所有麻烦之后,必须将该属性序列化为 JSON 字符串,然后再重新序列化为 List,这似乎是一种耻辱。

我查看了 JSON.NET、System.Json 和 System.Web.ScriptSerialization.JavaScriptSerializer,但它们似乎都不允许在 JSON 对象图和 .NET 类型之间进行转换。有没有人有办法做到这一点,还是我必须通过字符串?

【问题讨论】:

    标签: .net json serialization


    【解决方案1】:

    您的数据来源是什么?

    没有将 POJO 序列化为 JSON 的标准格式。 Java POJO 的 JSON 表示与 Ruby 生成的表示不同。

    因此您别无选择,只能手动处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-10
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      • 2013-11-10
      • 1970-01-01
      • 2020-12-16
      相关资源
      最近更新 更多