1. ホーム
  2. c#

[解決済み] JSON.netでJTokenの名前とキーを取得する

2023-02-21 04:52:38

質問

次のような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

各項目の "name" または "key" を取得するにはどうすればよいですか?

例えば、"MobileSiteContent"や"PageContent"などです。

どのように解決するのですか?

JToken の基底クラスです。 JObject , JArray , JProperty , JValue など。 このような場合は Children<T>() メソッドを使用すると、特定の型の JToken の子プロセスをフィルタリングしたリストを取得することができます。 JObject . それぞれの JObject のコレクションを持っています。 JProperty オブジェクトのコレクションを持ち、それらは 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