我可以将JSON元素“@somename”映射到吗?

7 浏览
0 Comments

我可以将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成员为空)。

0
0 Comments

可以使用JsonProperty来映射JSON元素"@somename"。

解决方法如下:

public class MyClass
{
    [JsonProperty("@somename")]
    public string attributes { get; set; }
}

这个属性仅适用于newtonsoft.json JsonConvert.DeserializeObject。

抱歉,我可能误解了你问题中提到的Newtonsoft的部分。

这是我的错误 - 我以为Newtonsoft组件添加并提供了粘贴为JSON类的功能,因为我认为它在我安装后出现了。但是内置的粘贴为类功能是否出现取决于它是否可以粘贴为类。

0