Google's data APIからJSONフィードを取得しています。多くのプロパティ名は$文字(ドル記号)で始まります。C#クラスはJSONのドル記号をどのように扱うのですか?
私の問題は、ドル記号で始まる変数名を持つC#クラスを作成できないことです。言語では許可されていません。私はJSON.NET from Newtonsoftを使ってJSONをC#オブジェクトに変換しています。この問題を回避するにはどうすればよいですか?
Google's data APIからJSONフィードを取得しています。多くのプロパティ名は$文字(ドル記号)で始まります。C#クラスはJSONのドル記号をどのように扱うのですか?
私の問題は、ドル記号で始まる変数名を持つC#クラスを作成できないことです。言語では許可されていません。私はJSON.NET from Newtonsoftを使ってJSONをC#オブジェクトに変換しています。この問題を回避するにはどうすればよいですか?
あなたは名前を指定する[JsonProperty]
属性を使用して試みることができる:
[JsonProperty(PropertyName = "$someName")]
public string SomeName { get; set; }
ドル記号($)と、これらの項目は、通常のメタデータとされていないフィールドであることを意味しています。 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を伝えます。
希望に役立ちます。..
firas489は$は、メタデータではなく、実際のデータ・フィールドを示していることを正しい軌道に乗っていました。
[JsonProperty("$id")]
public string Id { get; set; }
:メタデータは無視し、その後、あなたがのPropertyName属性を使用してプロパティをデシリアライズ/シリアライズすることができハンドリング設定し
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.MetadataPropertyHandling = MetadataPropertyHandling.Ignore;
:しかし修正はこれを行うには、実際にあります