【发布时间】:2012-07-04 01:19:12
【问题描述】:
通常我们通过这段代码使用 JSON.NET 反序列化
JsonConvert.DeserializeObject<CLASS TYPE> (text, settings);
想象一下,我们有这样的 JSON 请求:
{
"command" : "register_user",
"params" : {
"@c" : "register_params",
"name" : "sdfsd",
"email" : "sdfsd@ddkdk",
"password" : "JDFffJJJd"
}
}
我们如何自动检测到我们需要使用 JSON.NET 将“名称”、“电子邮件”和“密码”字段反序列化为一个 register_params 对象?
【问题讨论】:
-
这 (stackoverflow.com/questions/9490345/…) 看起来是相关的,因为您使用 @c 就像 JSON.NET 通常使用 $type 一样。
-
您能否提供使用此类元字段的示例链接?我找到了文章,它解释了不同的方式,但不是很有帮助:dotnetbyexample.blogspot.com/2012/02/…
-
JSON.NET 引入了一个 TypeNameHandling 值,可以通过两种方式使用;作为 JsonSerializerSettings 的参数。在您希望它应用到的属性的属性中,像这样
[JsonProperty(TypeNameHandling = TypeNameHandling.All)]。它通过将 $type 写入 JSON 输出来工作。具体的文章我不知道,看james.newtonking.com/projects/json/help/…关于TypeNameHandling的解释。
标签: c# .net json serialization json.net