2017-03-28 13 views
0

私は辞書を持っています。 種類,Idの項目がの3つのキーがあります。 の値は、内部にディクショナリを含むArrayList型のオブジェクトです。 内部辞書のキーがあること、型のArrayList enter image description hereタイプArrayListのオブジェクトから辞書を抽出する必要があります

Similaryのオブジェクト内でこの辞書抽出する方法:種類IDのETagselflinkvolumeInfoを。 これらのうちの値volumeInfoは、辞書を含むタイプArrayListのオブジェクトで構成されています。私はタイトル字幕の値を抽出する必要が

は、volumeInfo

+1

ようこそスタックオーバーフロー。コードを追加する必要があります。あなたがしていることの説明だけでは十分ではありません。 – Sefe

+1

カスタムタイプ(クラス)を使用することをお勧めします。何千もの辞書よりも扱いが簡単です。 – Sebi

+1

質問は何ですか?どのように各オブジェクトの種類を決定する? 'as'または' is'でタイプをチェックしようとしましたか?または 'OfType <>' LINQ演算子ですか?このようなあいまいな質問をするのは非常に難しいです。それを変更するには、実際のコードをリバースエンジニアリング*する必要があります。 –

答えて

0

の最も内側の辞書あなたDictionaryArrayList内の任意の要素から著者は、コンパイラが「doesnの意味、objectとしてを扱われます実際のタイプを知ることはできません。辞書は"items"キーが含まれていない場合は、しかし、

ArrayList list = (ArrayList)dict["items"]; 

を、または"items"キーの値がArrayListでない場合、このコードは以下となります。これらの要素のいずれかを使用するには、あなたはそれをキャストする必要があります例外をスローします。データ構造の内容が常に同じであることが分かっている場合は、これは問題である必要はありません。 ArrayListへのアクセス

ArrayList items = o as ArrayList; 
if (items == null) 
{ 
    // items is not an ArrayList! 
} 

が鋳造ビットについて同様です: - - キャスト要素

object o; 
if (!dict.TryGetValue("items", out o)) 
{ 
    // item not found! 
} 

そしてテスト:

あなたは辞書は、特定のエントリが含まれているかどうかをテストすることができます。

"Kind"、 "TotalItems"、 "Items"の各プロパティを持つオブジェクトを作成すると、データへのアクセスが簡単になり(コード作成が簡単になります)。このデータ構造がJsonまたはXmlの逆シリアル化の結果であっても、専用クラスにデシリアライズできるシリアライザがあります。

関連する問題