【发布时间】:2019-07-19 16:25:46
【问题描述】:
我的目标是带有 winforms 应用程序的 .net framework 4.7。 我开始关注这篇文章https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/console-webapiclient,所以我正在使用 DataContractJsonSerializer。 我正在尝试了解返回 JSON 的 REST 接口 -
{"Resource":
{"@attributes":
{"name":"Asset",
"resourceId":"Asset",
"type":"Resource"
}
}
}
我使用 netwonsoft.json 12.0.2 将 JSON 粘贴为类。它忽略“@”字符并在“资源”类中创建一个“属性”类型的成员“属性”。
当 DataContractJsonSerializer 尝试反序列化 JSON 时,它会跳过 @attribute 元素,我推测是因为它与类名不匹配。
有没有办法将元素@attributes 映射到我的属性成员/类?
我尝试在 Resource 类的属性成员上添加 [DataMember(Name = "@attributes")] 并在 Attributes 类上添加 [DataContract(Name = "@attributes")] 但元素似乎仍然是已跳过(Resource 的属性成员为空)。
【问题讨论】:
-
能否请edit 使用有效的 JSON 发布?此外,通常 Json.Net 是首选的反序列化器(并且副本涵盖了使用它重命名属性的各种方式),如果您必须使用
DataContractJsonSerializer在帖子中澄清它 - 可能需要另一个副本。 -
我不必使用DataContractJsonSerializer;我之所以使用它,是因为它在我遵循的创建 REST 客户端的文章中。 (见编辑后的帖子)
标签: c# json winforms datacontractjsonserializer