运行以下代码时,出现错误提示
无法将类型为“ Newtonsoft.Json.Linq.JArray”的对象转换为类型为“ Newtonsoft.Json.Linq.JObject”
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;
}
我尝试通过以下方式将其转换为Object类型,但出现错误
JObject ojObject = (JObject)joResponse["result"].ToObject(JObject));
我的第三方API以以下格式返回数据,在c#中,我需要获取数字字段的值,即“ IM3423354”
{
"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"
}
]
}
答案 0 :(得分:0)
这里的主要问题是您试图将结果作为对象访问,但实际上它是一个包含单个对象的数组。因此,您需要执行此操作以获取对象。
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");