
您想要
JsonSerializer.Populate()它的静态包装器方法
JsonConvert.PopulateObject():
将JSON值填充到目标对象上。
例如,这里正在更新您的
Calendar类的实例:
public static class TestPopulate{ public static void Test() { var calendar = new Calendar { Id = 42, CoffeeProvider = "Espresso2000", Meetings = new[] { new Meeting { Location = "Room1", From = DateTimeOffset.Parse("2014-01-01T00:00:00Z"), To = DateTimeOffset.Parse("2014-01-01T01:00:00Z") }, new Meeting { Location = "Room2", From = DateTimeOffset.Parse("2014-01-01T02:00:00Z"), To = DateTimeOffset.Parse("2014-01-01T03:00:00Z") }, } }; var patch = @"{ 'coffeeprovider': null, 'meetings': [ { 'location': 'Room3', 'from': '2014-01-01T04:00:00Z', 'to': '2014-01-01T05:00:00Z' } ]}"; Patch(calendar, patch); Debug.WriteLine(JsonConvert.SerializeObject(calendar, Formatting.Indented)); } public static void Patch<T>(T obj, string patch) { var serializer = new JsonSerializer(); using (var reader = new StringReader(patch)) { serializer.Populate(reader, obj); } }}产生的调试输出为:
{ "id": 42, "coffeeprovider": null, "meetings": [ { "location": "Room3", "from": "2014-01-01T04:00:00+00:00", "to": "2014-01-01T05:00:00+00:00" } ]}更新资料
如果要先复制,则可以执行以下 *** 作:
public static T CopyPatch<T>(T obj, string patch) { var serializer = new JsonSerializer(); var json = JsonConvert.SerializeObject(obj); var copy = JsonConvert.DeserializeObject<T>(json); using (var reader = new StringReader(patch)) { serializer.Populate(reader, copy); } return copy; }欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)