【问题标题】:Deserialize json with array of different types using DataContractJsonSerializer使用 DataContractJsonSerializer 反序列化具有不同类型数组的 json
【发布时间】:2012-11-22 14:50:45
【问题描述】:

有没有办法反序列化这样的json

{
  "photos": [
    19,
    {
      "pid": 288777129,
      "aid": -6
    },
    {
      "pid": 286441792,
      "aid": -6
    },
    {
      "pid": 114893258,
      "aid": 34465839
    }
  ]
}

使用 C# DataContractJsonSerializer 而不修改源代码。我的意思是第一个元素 19。

【问题讨论】:

  • JSON 数组不限于一种类型(因此 json 是有效的),实际上在 javascript 中,这些对象在某种意义上都被视为不同的类型,因为它们只是通用的对象字面量。跨度>
  • 我已将问题标题编辑得更正确。
  • 您找到答案了吗?或者你最终没有使用 DataContract
  • @FYaqoob,我放弃了使用 DataContractJsonSerializer 并切换到使用 Json.NET 的自定义转换器解决方案

标签: c# json serialization datacontractjsonserializer


【解决方案1】:

我通常使用JavascriptSerializer 类代替:

JavaScriptSerializer js = new JavaScriptSerializer();
Object obj = js.DeserializeObject(str);
Response.Write(obj["photos"][0]); // 19

【讨论】:

  • 不幸的是,我在反序列化时需要 DataContract 支持。
猜你喜欢
  • 1970-01-01
  • 2017-03-27
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多