免责声明:关于这个主题有很多主题,但到目前为止,我发现只有一个关于部分反序列化的主题thisone,已经有几年了
问题:在json.net中最简单的方法是什么,但没有太多开销,将部分JSON字符串反序列化为对象?
给定一个JSON对象:
{
"message":"Login successful",
"data":{
"firstname":"John",
"lastname":"Doe",
}
}
和一个对象:
public class UserData
{
[JsonProperty("firstname")]
public string FirstName;
[JsonProperty("lastname")]
public string LastName;
}
比,你可以使用很多方法。例如创建另一个包含变量UserData data
的对象并反序列化到该对象。但是,如果您想访问FirstName,您将始终必须添加data
(data.FirstName
),这不是很好。
另一种方法(如上面链接的帖子)是将对象反序列化为dynamic / var,获取数据的一部分,将其序列化并将该字符串提供给
dynamic obj = JsonConvert.DeserializeObject(JSONString);
UserData User = JsonConvert.DeserializeObject<Model.UserData>(JsonConvert.SerializeObject(obj["data"]));
是的,它运作良好,但也许有点开销? 另一个选择是使用自定义JsonConverter,但这似乎是为这么简单的事情分配的代码。
我希望使用像
这样的东西[JsonProperty("data.firstname")]
public string FirstName;
或其他设置,让json.net知道它应该使用路径data
将JSON字符串反序列化为UserData
,但我还没有在文档中找到这样的东西。
有什么建议吗?