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)
{

}

content एक है JToken

मैं प्रत्येक आइटम का "नाम" या "कुंजी" कैसे प्राप्त कर सकता हूं?

उदाहरण के लिए, "MobileSiteContent" या "PageContent"

जवाबों:


130

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

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);
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.