JSON.netでJTokenの名前/キーを取得する


82

私はこのようなJSONを持っています

[
  {
    "MobileSiteContent": {
      "Culture": "en_au",
      "Key": [
        "NameOfKey1"
      ]
    }
  },
  {
    "PageContent": {
      "Culture": "en_au",
      "Page": [
        "about-us/"
      ]
    }
  }
]

これをJArrayとして解析します。

var array = JArray.Parse(json);

次に、配列をループします。

foreach (var content in array)
{

}

contentJToken

各アイテムの「名前」または「キー」を取得するにはどうすればよいですか?

たとえば、「MobileSiteContent」または「PageContent」

回答:


130

JToken基本クラスですJObjectJArrayJPropertyJValueなどは、あなたが使用することができChildren<T>()、たとえば、特定の種類のものであるJTokenの子のフィルタリングされたリストを取得する方法をJObject。それぞれJObjectJPropertyオブジェクトのコレクションがあり、Properties()メソッドを介してアクセスできます。それぞれについてJProperty、あなたはそのを得ることができますName。(もちろん、Value必要に応じて取得することもできますJToken。これは別の方法です。)

すべてをまとめると、次のようになります。

JArray array = JArray.Parse(json);

foreach (JObject content in array.Children<JObject>())
{
    foreach (JProperty prop in content.Properties())
    {
        Console.WriteLine(prop.Name);
    }
}

出力:

MobileSiteContent
PageContent

24
JObject obj = JObject.Parse(json);
var attributes = obj["parent"]["child"]...["your desired element"].ToList<JToken>(); 

foreach (JToken attribute in attributes)
{   
    JProperty jProperty = attribute.ToObject<JProperty>();
    string propertyName = jProperty.Name;
}

23

JObjectのデフォルトのイテレータは、キーと値のペアを反復するディクショナリです。

JObject obj = JObject.Parse(response);
foreach (var pair in obj) {
    Console.WriteLine (pair.Key);
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.