0

我正在使用通过 REST 公开 API 的第 3 方服务器(因此无法更改 JSON)。它返回的 JSON 格式如下:

    [
         {
              "@noun":"tag",
              "@version":0,
              "@tag":"myFoo"
         }
    ]

我创建了一个 C# 对象来表示这个项目

    public class ResponseItem
    {
        public string noun {get;set;}
        .....
    }

但是,当我尝试使用 JavaScriptSerializer 反序列化此对象时,不会分配属性。序列化程序似乎无法处理名称前带有 @ 符号的属性。

关于如何解决这个问题的任何想法?

4

1 回答 1

2

好的,经过一番折腾,我放弃了 JavaScriptSerializer。我切换到 DataContractJsonSerializer。然后,我使用定义明确的数据协定并使用 DataMember 属性来指定名称。

IE

[DataContract]
public class ResponseItem
{
    [DataMember(Name="@noun")]
    public string Noun {get;set;}
    ....
}

可能有更好/不同的方式,但这是可行的并且是可接受的解决方案

于 2013-03-05T16:23:36.017 回答