如何使用Json对象映射ValueInjecter

本文关键字:映射 ValueInjecter 对象 Json 何使用 | 更新日期: 2023-09-27 18:27:09

如果我有Json对象,我想映射到一个具体的对象,我该怎么做?

  public class Student
    {
        public string Name { get; set; }  
    }
  class Program
    {
        static void Main(string[] args)
        {
            var o = new JObject {{"Name", "Jim"}};
            Student student = new Student();

            student.InjectFrom(o);
        }
    }

这将导致null。当我期待《吉姆》的时候。

如何使用Json对象映射ValueInjecter

由于您无论如何都在使用json.net,因此可以使用JsonConvert.PopulateObject():直接从json填充对象

JsonConvert.PopulateObject(json, student);

或者,如果你喜欢,你可以添加一些扩展方法:

public static class JsonExtensions
{
    public static void PopulateFromJson<T>(this T target, string json) where T : class
    {
        if (target == null || json == null)
            throw new ArgumentException();
        JsonConvert.PopulateObject(json, target);
    }
    public static void PopulateFromJson<T>(this T target, JToken json) where T : class
    {
        if (target == null || json == null)
            throw new ArgumentException();
        using (var reader = json.CreateReader())
            JsonSerializer.CreateDefault().Populate(reader, target);
    }
}

        var o = new JObject { { "Name", "Jim" } };
        Student student = new Student();
        student.PopulateFromJson(o);