我正在使用Newtonsofts Json.NET来序列化/反序列化一些JSON数据。根据我从文档中收集的内容,Deserialize()
方法始终返回新对象。有没有办法反序列化为现有对象?即只覆盖JSON正在反序列化的成员?
答案 0 :(得分:1)
注意JsonConvert.PopulateObject
JsonConvert.PopulateObject(json,item,new JsonSerializerSettings());
string json1 = @"
{
""CID"": ""13579"",
""jsonrpc"": ""something"",
""id"": ""24680""
}";
Account account = JsonConvert.DeserializeObject<Account>(json1);
string json2 = @"
{
""mail"": [ ""abc@example.com"", ""def@example.org"" ],
""uid"": [ ""87654"", ""192834"" ],
""userPassword"": [ ""superSecret"", ""letMeInNow!"" ]
}";
JsonConvert.PopulateObject(json2, account);
因此,如果你需要重复转换一千个对象,你可以在这条路线上获得更好的性能,这样每次都不会实例化新的JsonSerializer。