簡體   English   中英

如何使用Json Object映射ValueInjecter?

[英]How to map ValueInjecter using Json Object?

如果我想要將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。 當我期待“吉姆”被設定。

既然你正在使用 ,你可以使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM