2017-03-28 3 views
0

Ich habe ein Wörterbuch. Es hat 3 Schlüssel: Art, Id und Artikel. Wert Elemente ist ein Objekt vom Typ ArrayList, das ein Dictionary enthält. Wie dieses Wörterbuch extrahieren, die im Inneren des Objekts vom Typ Arraylist ist enter image description hereNotwendigkeit, Wörterbuch aus einem Objekt des Typs ArrayList zu extrahieren

Similary, dass innere Wörterbuch hat Tasten: Art, id, etag, selflink, volumeInfo. Aus diesen Werten besteht der Wert volumeInfo wieder aus einem Objekt vom Type ArrayList, das ein Dictionary enthält.

Ich brauche Werte von Titel, Untertitel, Autoren aus dem innersten Wörterbuch der volumeInfo

+1

Willkommen beim Stapelüberlauf. Sie müssen Ihren Code hinzufügen. Eine Beschreibung dessen, was Sie tun, ist nicht genug. – Sefe

+1

Ich würde Ihnen empfehlen, benutzerdefinierte Typen (Klassen) zu verwenden. Viel einfacher zu handhaben als Tausende von Wörterbüchern. – Sebi

+1

Was ist die Frage? Wie ermittelt man den Typ jedes Objekts? Haben Sie versucht, die Typen mit 'as' oder' is' zu überprüfen? Oder der 'OfType <>' LINQ-Operator? Es ist sehr schwer mit einer so vagen Frage zu helfen. Man müsste * den tatsächlichen Code * zurückentwickeln, um ihn zu modifizieren. –

Antwort

0

Jedes Element in Ihrem Dictionary und ArrayList sind behandelt als object, zu extrahieren, was bedeutet, dass der Compiler doesn‘ Ich weiß über den tatsächlichen Typ Bescheid. Um eines dieser Elemente verwenden, werden Sie es werfen müssen:

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

Wenn jedoch das Wörterbuch keine "items" Schlüssel enthält, oder wenn der Wert für die "items" Schlüssel ist kein ArrayList, dieser Code eine Ausnahme auslösen Wenn Sie wissen, dass der Inhalt Ihrer Datenstruktur immer gleich ist, muss dies kein Problem sein.

können Sie testen, ob das Wörterbuch einen bestimmten Eintrag enthält:

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

Und dann Test - und Guss - das Element:

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

die ArrayList Zugriff ähnlich in Bezug auf das Casting-Bit.

Ihre Daten wären viel einfacher zugänglich (und einfacher zu codieren), wenn Sie ein Objekt mit den Eigenschaften "Kind", "TotalItems" und "Items" erstellen. Auch wenn diese Datenstruktur das Ergebnis der JS- oder Xml-Deserialisierung ist, gibt es Serialisierer, die in dedizierte Klassen deserialisieren können.

Verwandte Themen