【问题标题】:Can I omit fields when deserializing a JSON object?反序列化 JSON 对象时可以省略字段吗?
【发布时间】:2011-05-25 17:59:19
【问题描述】:

使用 .NET 的 DataContractJsonSerializer,我正在尝试将 JSON 对象反序列化为我定义的类。
但是,我要反序列化的对象的字段比我需要的要多。
有没有办法让它只反序列化我在相应类中指定的字段?
我试图避免这种情况SerializationException

无法反序列化数据协定类型“xxx”,因为找不到所需的数据成员“yyy”。

【问题讨论】:

标签: .net json exception deserialization


【解决方案1】:

这就是我在 .NET 中修复大部分 JSON 错误的方法。我使用 JSON.NET 而不是内置的。

http://json.codeplex.com/

这是一个无耻地从他们的文档中摘录的简单示例:

Product product = new Product();

product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };

string output = JsonConvert.SerializeObject(product);
//{
//  "Name": "Apple",
//  "Expiry": "\/Date(1230375600000+1300)\/",
//  "Price": 3.99,
//  "Sizes": [
//    "Small",
//    "Medium",
//    "Large"
//  ]
//}

Product deserializedProduct = JsonConvert.DeserializeObject<Product>(output);

祝你好运。

【讨论】:

    【解决方案2】:

    您可能想看看在您的对象上实现IExtensibleDataObject,以及启用ignoreExtensionDataObject。 ignoreExtensionDataObject 属性指定在反序列化时是否忽略未知数据。

    【讨论】:

      猜你喜欢
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2011-11-23
      相关资源
      最近更新 更多