我可以在没有中间字符串转换的情况下从JSON对象图转换为.NET类吗?

时间:2011-04-09 08:45:34

标签: .net json serialization

我的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等价物是CursorList< T>使用NextCursor,PreviousCursor和Contents属性键入,其中Contents是IEnumerable< T>并包含数组的反序列化内容。但是,标准JSON反序列化器不能反序列化为CursorList< T>。因为JSON标签根据T而变化。我想取JSON,反序列化到对象图,提取类型相关属性(视情况而定的id或列表),并将其交给标准List< T>反序列化过程。在完成了创建对象图的所有麻烦之后,在将该属性序列化为JSON字符串然后重新序列化为List< T>之前,我们感到很遗憾。

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

1 个答案:

答案 0 :(得分:1)

您的数据来源是什么?

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

因此除了手动处理之外别无选择。