string json = "{"httpStatusCode": "OK",
      "count": 10,
      "entities": [
        {
          "responseCode": 200,
          "ResponseCode": 0,
          "headers": null,
          "Headers": null,
          "content": "name1"
        },
        {
          "responseCode": 200,
          "ResponseCode": 0,
          "headers": null,
          "Headers": null,
          "content": "name2"
        }
      ]
    }"

मैं कोड के इस टुकड़े का उपयोग करता हूं और "सामग्री" (नाम 1, नाम 2) के मूल्य को प्रिंट नहीं कर सकता, यह सिर्फ अगर कथन को छोड़ देगा

JObject o = JObject.Parse(json);
foreach (var element in o["entities"])
    {
        foreach(var ob in element)
        {
            if(ob.toString() == "content")
                Console.WriteLine(ob);
        }
    }

तो, मैं name1 और name2 का प्रिंट आउट कैसे ले सकता हूं? धन्यवाद।

-3
Crystal Nguyen 29 जिंदा 2021, 01:11
1
क्या आपने डीबगर को यह सत्यापित करने के लिए कोड के माध्यम से कदम उठाने की कोशिश की है कि आप उनसे क्या उम्मीद करते हैं?
 – 
itsme86
29 जिंदा 2021, 01:20
कृपया अपने प्रश्न और टैग में JSON को पार्स करने के लिए आपके द्वारा उपयोग की जाने वाली लाइब्रेरी जोड़ें।
 – 
Jacek
29 जिंदा 2021, 01:36

2 जवाब

सबसे बढ़िया उत्तर

मुझे लगता है कि आपका उदाहरण कोड Newtonsoft.Json लाइब्रेरी का उपयोग करता है।

आपके कोड में कुछ संशोधन वास्तव में आपका कोड काम कर सकते हैं। आपको "सामग्री" नामक संपत्ति के लिए अपना JSON खोजना होगा। इस उद्देश्य के लिए अपना JToken से JProperty टाइप करें। तब आप इसके नाम और मूल्य को इस तरह एक्सेस कर सकते हैं:

JObject o = JObject.Parse(json);
foreach (var element in o["entities"])
{
    foreach (var ob in element)
    {
        if (ob is JProperty prop && prop.Name == "content")
            Console.WriteLine(prop.Value.ToString());
    }
}
1
Wai Ha Lee 29 जिंदा 2021, 14:47

यदि आप केवल सामग्री प्राप्त करना चाहते हैं, तो आप SelectToken या एक का उपयोग कर सकते हैं लूप की तरह:

JObject o = JObject.Parse(json);

//SelectToken
List<string> contents =  o.SelectToken("$.entities").Select(o => o.SelectToken("content").ToString()).ToList();

//loop
foreach (var element in o["entities"])
{
    string content = ((JValue)element["content"])?.Value?.ToString();
    if (content != null)
        Console.WriteLine(content);
}

परीक्षण के लिए :

string json = @"{
   ""httpStatusCode"":""OK"",
   ""count"":10,
   ""entities"":[
      {
                ""responseCode"":200,
         ""ResponseCode"":0,
         ""headers"":null,
         ""Headers"":null,
         ""content"":""name1""
      },
      {
                ""responseCode"":200,
         ""ResponseCode"":0,
         ""headers"":null,
         ""Headers"":null,
         ""content"":""name2""
      }
   ]
}";

JObject o = JObject.Parse(json);
List<string> contents = o.SelectToken("$.entities").Select(o => o.SelectToken("content").ToString()).ToList();

Console.WriteLine(string.Join(",", contents));

परिणाम

name1,name2

मुझे आशा है कि आपको यह मददगार लगा होगा।

0
Sajid 29 जिंदा 2021, 01:42
अपना समय देने के लिए धन्यवाद
 – 
Crystal Nguyen
29 जिंदा 2021, 01:41
आपका स्वागत है!, आपको foreach के अंदर foreach का उपयोग करने की आवश्यकता नहीं है, आप इसे एक बार में प्राप्त कर सकते हैं। मेरा अपडेट जांचें
 – 
Sajid
29 जिंदा 2021, 01:44