NewtonSoft.JSON官方手册中文版【连载9】

CustomCreationConverter

CustomCreationConverter<T> 是一个JsonConverter,它提供了一种方式来自定义在JSON反序列化过程中如何创建对象。一旦创建了对象,序列化器将在其上填充值。

示例

CustomCreationConverter

public interface IPerson
{
  string FirstName { get; set; }
  string LastName { get; set; }
  DateTime BirthDate { get; set; }
}
public class Employee : IPerson
{
  public string FirstName { get; set; }
  public string LastName { get; set; }
  public DateTime BirthDate { get; set; }
  public string Department { get; set; }
  public string JobTitle { get; set; }
}
public class PersonConverter : CustomCreationConverter<IPerson>
{
  public override IPerson Create(Type objectType)
  {
      return new Employee();
  }
}

这是一个极其简单的示例。更复杂的场景可能涉及在运行时解析对象的对象工厂或服务定位器。

CustomCreationConverter示例

//[
//  {
//    "FirstName": "Maurice",
//    "LastName": "Moss",
//    "BirthDate": "1981-03-08T00:00Z",
//    "Department": "IT",
//    "JobTitle": "Support"
//  },
//  {
//    "FirstName": "Jen",
//    "LastName": "Barber",
//    "BirthDate": "1985-12-10T00:00Z",
//    "Department": "IT",
//    "JobTitle": "Manager"
//  }
//]
List<IPerson> people = JsonConvert.DeserializeObject<List<IPerson>>(json, new PersonConverter());
IPerson person = people[0];
Console.WriteLine(person.GetType());
// Newtonsoft.Json.Tests.Employee
Console.WriteLine(person.FirstName);
// Maurice
Employee employee = (Employee)person;
Console.WriteLine(employee.JobTitle);
// Support
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值