反序列化JSON忽略包装器

时间:2016-04-18 15:12:34

标签: c# .net json serialization

我正在尝试将从REST调用接收的JSON字符串反序列化为名为User的干净C#对象。然而,返回的JSON有很多我想忽略的“绒毛”。

JSON字符串如下:

{
  "Items": [
    {
      "LoginID": "A",
      "EmployeeID": "1",
      "FirstName": "A",
      "LastName": "A",
      "MiddleName": "",
      "PrimaryEmail": "A@1",
      "Active": true,
      "CellPhoneNumber": null,
      "OrganizationUnit": null,
      "ID": null,
      "URI": null
    },
    {
      "LoginID": "B",
      "EmployeeID": "2",
      "FirstName": "B",
      "LastName": "B",
      "MiddleName": "",
      "PrimaryEmail": "B@2",
      "Active": true,
      "CellPhoneNumber": null,
      "OrganizationUnit": null,
      "ID": null,
      "URI": null
    }
  ],
  "NextPage": null
}

我希望将其转换为User对象数组,定义为:

[DataContract]
    public class User
    {
        [DataMember]
        public string LoginID { get; set; }
        [DataMember]
        public string EmployeeID { get; set; }
        [DataMember]
        public string FirstName { get; set; }
        [DataMember]
        public string LastName { get; set; }
        [DataMember]
        public string MiddleName { get; set; }
        [DataMember]
        public string PrimaryEmail { get; set; }
        [DataMember]
        public bool Active { get; set; }
        [DataMember]
        public object CellPhoneNumber { get; set; }
        [DataMember]
        public object OrganizationUnit { get; set; }
        [DataMember]
        public object ID { get; set; }
        [DataMember]
        public object URI { get; set; }
    }

我正在努力避免使用Newtonsoft.Json,因为我想创建尽可能少的依赖项。

使用标准DataContractJsonSerializer将无效,因为它使用返回的数据流。我想避免创建一个类只是为了让JSON适合我的类结构而从不使用它,特别是如果这些类暴露给代码的用户。

简而言之,我是否只能在不使用Newtonsoft.Json的情况下反序列化JSON字符串的特定部分?如果没有,那么对JSON进行反序列化的最佳实践和最简洁的方法是什么?

由于

1 个答案:

答案 0 :(得分:0)

我不确定你是否可以在不使用NewtonSoft.Json的情况下完成。

我通常会在您向我们展示的情况下使用其中一个选项。

当值可以为null时:

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]

或总是忽略反序列化:

[JsonIgnore]

这两个选项将忽略反序列化。