【发布时间】:2021-01-10 01:31:15
【问题描述】:
在这行代码上:
var arr = JsonConvert.DeserializeObject<JArray>(s);
...我得到了,“无法将类型为 'Newtonsoft.Json.Linq.JObject' 的对象转换为类型 'Newtonsoft.Json.Linq.JArray'。”
我把那行改成这样:
JArray arr = JsonConvert.DeserializeObject<JArray>(s);
...并得到相同的错误消息。
我改成这样了:
var arr = JsonConvert.DeserializeObject<JObject>(s);
...它甚至无法编译。
此时调用(在字符串s中)读取的值是:
{"id":347745,"results":[{"iso_3166_1":"US","release_dates":[{"certification":"","iso_639_1":"","note":"","release_date":"1936-12-12T00:00:00.000Z","type":3}]}]}
我想要的只是“认证”的价值;在这种情况下,认证值是一个空字符串(“certification”:“”)
在上下文中,代码是:
. . .
try
{
var webRequest = (HttpWebRequest)WebRequest.Create(RESTStringToGetMPAARatingForMovieId);
webRequest.Method = "GET";
var webResponse = (HttpWebResponse)webRequest.GetResponse();
if ((webResponse.StatusCode == HttpStatusCode.OK) && (webResponse.ContentLength > 0))
{
StreamReader streamReader = new StreamReader(webResponse.GetResponseStream());
string s = streamReader.ReadToEnd();
var arr = JsonConvert.DeserializeObject<JArray>(s);
//JArray arr = JsonConvert.DeserializeObject<JArray>(s);
//var arr = JsonConvert.DeserializeObject<JObject>(s);
foreach (JObject obj in arr)
{
_currentMPAARating = (string)obj["certification"];
. . .
}
}
else
{
MessageBox.Show(string.Format("Status code == {0}, Content length == {1}",
webResponse.StatusCode, webResponse.ContentLength));
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
【问题讨论】:
标签: json.net json-deserialization jsonconvert