我正在使用通过REST公开API的第三方服务器(因此无法更改JSON)。它返回的JSON格式如下:
[
{
"@noun":"tag",
"@version":0,
"@tag":"myFoo"
}
]
我创建了一个C#对象来表示这个项目
public class ResponseItem
{
public string noun {get;set;}
.....
}
但是,当我尝试使用JavaScriptSerializer反序列化此对象时,不会分配属性。序列化程序似乎无法使用名称前面的@符号处理属性。
关于如何解决这个问题的任何想法?
答案 0 :(得分:2)
好的,经过一番调查后,我抛弃了JavaScriptSerializer。我切换到DataContractJsonSerializer。然后,我使用定义良好的数据协定,并使用DataMember属性指定名称。
即
[DataContract]
public class ResponseItem
{
[DataMember(Name="@noun")]
public string Noun {get;set;}
....
}
可能有更好/不同的方式,但这是有效的并且是可接受的解决方案