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