[c#] JSON.net으로 JToken의 이름 / 키 얻기

다음과 같은 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 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;
}


답변

JObject의 기본 반복기는 키 / 값 쌍을 반복하는 사전입니다.

JObject obj = JObject.Parse(response);
foreach (var pair in obj) {
    Console.WriteLine (pair.Key);
}


답변