我可以将JSON元素“@somename”映射到吗?
我可以将JSON元素“@somename”映射到吗?
我正在使用.NET Framework 4.7开发一个WinForms应用程序。我最初参考了这篇文章:https://learn.microsoft.com/en-us/dotnet/csharp/tutorials/console-webapiclient,所以我使用了DataContractJsonSerializer。
我正试图了解一个返回JSON的REST接口 -
{"Resource":
{"@attributes":
{"name":"Asset",
"resourceId":"Asset",
"type":"Resource"
}
}
}
我使用了Newtonsoft.Json 12.0.2将JSON粘贴为类。它忽略了'@'字符,并在类"Resource"中创建了一个类型为"Attributes"的成员"attributes"。
当DataContractJsonSerializer尝试反序列化JSON时,它跳过了@attributes元素,我猜想是因为它与类名不匹配。
有办法将@attributes元素映射到我的attributes成员/类吗?
我尝试在Resource类的attributes成员上添加[DataMember(Name = "@attributes")],以及在Attributes类上添加[DataContract(Name = "@attributes")],但元素似乎仍然被跳过(Resource的attributes成员为空)。
可以使用JsonProperty来映射JSON元素"@somename"。
解决方法如下:
public class MyClass { [JsonProperty("@somename")] public string attributes { get; set; } }
这个属性仅适用于newtonsoft.json JsonConvert.DeserializeObject。
抱歉,我可能误解了你问题中提到的Newtonsoft的部分。
这是我的错误 - 我以为Newtonsoft组件添加并提供了粘贴为JSON类的功能,因为我认为它在我安装后出现了。但是内置的粘贴为类功能是否出现取决于它是否可以粘贴为类。