如何使用 Json 对象映射 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);
}
}
结果为空。当我期望设置 "Jim" 时。
因为您正在使用 json.net anyway, you can populate an object directly from JSON using JsonConvert.PopulateObject()
:
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);
如果我有 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);
}
}
结果为空。当我期望设置 "Jim" 时。
因为您正在使用 json.net anyway, you can populate an object directly from JSON using JsonConvert.PopulateObject()
:
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);