18

Google のデータ APIから JSON フィードを取得していますが、多くのプロパティ名が $ 文字 (ドル記号) で始まります。

私の問題は、ドル記号で始まる変数名を持つ C# クラスを作成できないことです。言語では許可されていません。Newtonsoft の JSON.NETを使用して、JSON を C# オブジェクトに変換しています。どうすればこの問題を回避できますか?

4

3 に答える 3

29

[JsonProperty]属性を使用して名前を指定してみてください。

[JsonProperty(PropertyName = "$someName")]
public string SomeName { get; set; }
于 2011-01-09T10:02:03.317 に答える
3

ドル記号 ($) が付いたアイテムは通常、メタデータであり、フィールドではありません。JSON.NET がオブジェクトをシリアル化し、オブジェクト タイプを処理するように指示すると、後で正しい逆シリアル化のためにメタデータを示す $ アイテムが挿入されます。

$ アイテムをメタデータとして扱いたい場合は、JsonSerializerSettings を使用します。例えば:

Dim jsonSettings As New Newtonsoft.Json.JsonSerializerSettings With {.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All}
Dim jsonOut As String = Newtonsoft.Json.JsonConvert.SerializeObject(objects, jsonSettings)

TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All は、JSON にデータ型を処理するように指示しますが、情報は $ に依存します。

それが役立つことを願っています..

于 2014-11-19T15:46:29.367 に答える