2016-08-28 23 views
1

内部構造は同じですが、予測できない別の名前を持つ類似のオブジェクトの配列からなるJSONデータを逆シリアル化するのに苦労しています。Newtonsoftのデシリアライザを使用してオブジェクトの配列を逆シリアル化します

JSONの全体的な構造は、この(source here)のようである:

enter image description here

1be2f7と193ff5名前付きオブジェクトは、同一の構造を有しています。

これらの2つのオブジェクトの名前をハードコードするとデシリアライズに問題はありませんが、ハードコーディングをしないとどうすればできますか?ここで

は、私が試したものです:

public List<Rig> rigs { get; set; } 

しかし、それは、このエラーを与える:

Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[Eth.Rig]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly. To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object. Path 'rigs.1be2f7', line 1, position 18.

ありsimilar question hereがあるが、その受け入れ答えはまた、Visual Studioのために私のために動作しません。オブジェクトの名前をハードコードするだけです。

答えて

0

これは本当に簡単なことです。これに

public List<Rig> rigs { get; set; } 

public Dictionary<Rig> rigs { get; set; } 

その後をループするためにこれを使用する:あなたは、結果としてそれをマークしたくない

foreach(KeyValuePair<string, Rig> entry in rigs) 
{ 
    // do something with entry.Value or entry.Key 
} 
+1

この

変更? :)あなたの質問はまだ開いています –

+0

@AshkanSirousコメントの前に投稿の日付を見てください。自己回答は2日後にのみ受理することができます。 – K48

関連する問題