JSONデータを読み取り、統計を作成するアプリケーションを開発していますが、問題が発生しました。
私はこのような文字列を持っています:
{
"position":[
{
"someKey1":"someVal1",
"someKey2":"someVal2",
},
{
"someKey1":"someVal3",
"someKey2":"someVal4",
}
}
someKeysとsomeValuesにアクセスしたい。
私はそれを次のような辞書に変換しています:
Dictionary<string, object> values = deserializeJSON(json_string);
編集1:申し訳ありませんが、deserializeJSONを追加するのを忘れました:
private Dictionary<string, object> deserializeJSON(string p_jsonObject)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Deserialize<Dictionary<string, dynamic>>(p_jsonObject);
}
キー「position」を使用して値のリストにアクセスするのに問題があります。値のタイプ["position"]を出力しようとすると、次のようになります。
System.Collections.ArrayList
ですから、これを繰り返すことができると思いましたが、できません。列挙子を使用してみました(オブジェクトを反復処理できるようになり、キャストするにはArrayListに追加する必要があることをここで読んでください):
ArrayList arr = new ArrayList();
IEnumerable enumerable = values["position"] as IEnumerable;
foreach (object element in enumerable)
{
arr.Add(element);
}
arr [0]を印刷すると、次のようになります。
System.Collections.Generic.Dictionary`2[System.String,System.Object]
ここで私は混乱しています。それはsomeKeysとsomeValsのリストだと思いますが、どちらが正しいはずですよね?今、私は運が悪かったので、これらの値にアクセスしようとしました。arr [0] ["someKey1"]を試しましたが、「オブジェクト」にインデックスを適用できないというエラーが発生します。
解決策について何かアイデアはありますか?理想的には、よりエレガントなソリューションですか?:)
前もって感謝します