131

JObject にあるデータにアクセスする方法を決定しようとしていますが、それを使用する方法を決定することはできません。

JObject Object = (JObject)Response.Data["my_key"];

Console.WriteLine(Object) を実行してコンソールに出力すると、次のようなデータが表示されます。

{
 "my_data" : "more of my string data"
...
}

しかし、それを反復/列挙する方法がわかりません。誰かアイデアはありますか? 私は今、途方に暮れています。

4

4 に答える 4

207

のドキュメントをJObject見ると、 が実装されていることがわかりますIEnumerable<KeyValuePair<string, JToken>>。したがって、次を使用して単純に反復処理できますforeach

foreach (var x in obj)
{
    string name = x.Key;
    JToken value = x.Value;
    …
}
于 2012-05-10T23:35:38.353 に答える
62

JObjectは、 JTokenにキャストすることにより、 JPropertyオブジェクトを介して列挙できます。

foreach (JProperty x in (JToken)obj) { // if 'obj' is a JObject
    string name = x.Name;
    JToken value = x.Value;
}

別の JObject 内にネストされた JObject がある場合、アクセサーが JToken を返すため、キャストする必要はありません。

foreach (JProperty x in obj["otherObject"]) { // Where 'obj' and 'obj["otherObject"]' are both JObjects
    string name = x.Name;
    JToken value = x.Value;
}
于 2015-12-24T17:13:06.900 に答える
20

答えは私にはうまくいきませんでした。どうやってこんなに票を集めたのかわからない。それは私を方向に向けるのに役立ちましたが。

これは私のために働いた答えです:

foreach (var x in jobj)
{
    var key = ((JProperty) (x)).Name;
    var jvalue = ((JProperty)(x)).Value ;
}
于 2015-04-12T03:35:47.900 に答える