0

REST 経由で API を公開するサードパーティ サーバーを使用しています (そのため、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 属性を使用して名前を指定します。

すなわち

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

より良い/異なる方法があるかもしれませんが、これは機能し、受け入れられる解決策です

于 2013-03-05T16:23:36.017 に答える