2011-01-09 6 views
12

Google's data APIからJSONフィードを取得しています。多くのプロパティ名は$文字(ドル記号)で始まります。C#クラスはJSONのドル記号をどのように扱うのですか?

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

答えて

19

あなたは名前を指定する[JsonProperty]属性を使用して試みることができる:

[JsonProperty(PropertyName = "$someName")] 
public string SomeName { get; set; } 
1

ドル記号($)と、これらの項目は、通常のメタデータとされていないフィールドであることを意味しています。 JSON.NETがオブジェクトをシリアル化し、オブジェクト型を処理するように指示すると、後で正しい逆シリアル化のためのメタデータを示す$ itemsが挿入されます。

$アイテムをメタデータとして扱う場合は、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を伝えます。

希望に役立ちます。..

4

firas489は$は、メタデータではなく、実際のデータ・フィールドを示していることを正しい軌道に乗っていました。

[JsonProperty("$id")] 
public string Id { get; set; } 
:メタデータは無視し、その後、あなたがのPropertyName属性を使用してプロパティをデシリアライズ/シリアライズすることができハンドリング設定し

JsonSerializerSettings settings = new JsonSerializerSettings(); 
settings.MetadataPropertyHandling = MetadataPropertyHandling.Ignore;    

:しかし修正はこれを行うには、実際にあります

関連する問題