जब मैं नीचे दिए गए कोड को चलाता हूं तो मुझे एक त्रुटि मिल रही है:

'Newtonsoft.Json.Linq.JObject' टाइप करने के लिए 'Newtonsoft.Json.Linq.JArray' प्रकार की वस्तु डालने में असमर्थ

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    var res = new StreamReader(response.GetResponseStream()).ReadToEnd();

    JObject joResponse = JObject.Parse(res.ToString());
    JObject ojObject = (JObject)joResponse["result"]; --> This line is throwing error
    string ticketnumber = ((JValue)ojObject.SelectToken("number")).Value.ToString();

    return ticketnumber;
}

मैंने इसे नीचे ऑब्जेक्ट टाइप करने के लिए परिवर्तित करने का प्रयास किया लेकिन त्रुटि हो रही है

JObject ojObject = (JObject)joResponse["result"].ToObject(JObject));

मेरा तृतीय पक्ष एपीआई नीचे दिए गए प्रारूप में डेटा लौटाता है और सी # में मुझे संख्या फ़ील्ड यानी "आईएम 3423354" का मान प्राप्त करने की आवश्यकता है

{
  "import_set": "ISET0010001",
  "staging_table": "imp_user",
  "result": [
    {
      "transform_map": "User",
      "table": "sys_user",
      "display_name": "number",
      "display_value": "IM3423354",
      "record_link": "https://instance.service-now.com/api/now/table/sys_user/ea928be64f411200adf9f8e18110c777",
      "status": "inserted", 
      "sys_id": "ea928be64f411200adf9f8e18110c777"
    }
  ]
}
c#
-1
Juan 16 अप्रैल 2020, 11:51

1 उत्तर

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

यहां मुख्य समस्या यह है कि आप किसी ऑब्जेक्ट के रूप में परिणाम तक पहुंचने का प्रयास कर रहे हैं, लेकिन यह वास्तव में एक ऑब्जेक्ट युक्त एक सरणी है। तो आपको वस्तु प्राप्त करने के लिए ऐसा करने की आवश्यकता है।

JToken ojObject = joResponse["result"][0];

लेकिन एक और समस्या है, उसमें आपके JSON में number नाम की कोई फ़ील्ड नहीं है। मुझे लगता है कि आप जो मूल्य चाहते हैं वह वास्तव में display_value नामक क्षेत्र में है। तो फिर आपको भी इसका इस्तेमाल करना चाहिए।

string ticketnumber = ((JValue)ojObject.SelectToken("display_value")).Value.ToString();

आप इसे निम्न तक छोटा भी कर सकते हैं;

string ticketnumber = (string)joResponse.SelectToken("result[0].display_value");
0
jason.kaisersmith 16 अप्रैल 2020, 09:57