Uzyskiwanie dostępu do obiektu ArrayList
Zajmuję się tworzeniem aplikacji, która odczytuje niektóre dane JSON i tworzy statystyki, ale teraz mam problem.
Mam taki ciąg:
{
"position":[
{
"someKey1":"someVal1",
"someKey2":"someVal2",
},
{
"someKey1":"someVal3",
"someKey2":"someVal4",
}
}
Chcę uzyskać dostęp do someKeys i someValues.
Konwertuję go na słownik taki jak ten:
Dictionary<string, object> values = deserializeJSON(json_string);
Edytuj 1: Przepraszamy, zapomniałem dodać deserializeJSON:
private Dictionary<string, object> deserializeJSON(string p_jsonObject)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Deserialize<Dictionary<string, dynamic>>(p_jsonObject);
}
Teraz mam problem z uzyskaniem dostępu do listy wartości z kluczem „pozycja”. Jeśli spróbuję wydrukować typ wartości [„pozycja”], otrzymuję:
System.Collections.ArrayList
Pomyślałem więc, że mogę to po prostu przejrzeć, ale nie mogę. Próbowałem użyć modułu wyliczającego (przeczytaj tutaj, że umożliwi to iterację obiektów i że muszę go dodać do listy ArrayList, aby go rzucić):
ArrayList arr = new ArrayList();
IEnumerable enumerable = values["position"] as IEnumerable;
foreach (object element in enumerable)
{
arr.Add(element);
}
Kiedy drukuję arr [0], otrzymuję:
System.Collections.Generic.Dictionary`2[System.String,System.Object]
Tutaj jestem zdezorientowany. Zakładam, że to lista someKeys i someVals, które powinny być poprawne, prawda? Teraz bez powodzenia próbowałem uzyskać dostęp do tych wartości. Próbowałem arr [0] ["someKey1"], ale otrzymałem błąd, że nie mogę zastosować indeksowania do „obiektu”.
Jakieś pomysły na rozwiązanie? Idealnie bardziej eleganckie rozwiązanie? :)
Z góry dziękuję