このような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)
{
}
content
はJToken
です
各アイテムの「名前」または「キー」を取得するにはどうすればよいですか?
たとえば、「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
JObjectのデフォルトのイテレータは、キー/値のペアを反復処理する辞書です。
JObject obj = JObject.Parse(response);
foreach (var pair in obj) {
Console.WriteLine (pair.Key);
}
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;
}