我可以使用Json.Net将JSON反序列化为现有对象吗?

时间:2018-05-07 15:50:06

标签: c# json json.net

我正在使用Newtonsofts Json.NET来序列化/反序列化一些JSON数据。根据我从文档中收集的内容,Deserialize()方法始终返回新对象。有没有办法反序列化为现有对象?即只覆盖JSON正在反序列化的成员?

1 个答案:

答案 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。