尝试将 JSON 数组解析为 JSON 对象时出错
Having error upon trying to parse a JSON array into JSON object
我正在尝试使用以下代码解析 JSON 数组:
public async Task QuoteAsync()
{
await this.Context.Channel.TriggerTypingAsync();
var client = new HttpClient();
var result = await client.GetStringAsync("https://zenquotes.io/api/random");
JArray qarray = JArray.Parse(result);
JObject quote = JObject.Parse(qarray[0]["q"].ToString());
JObject author = JObject.Parse(qarray[0]["a"].ToString());
await this.ReplyAsync($"{quote} - {author}");
}
我向 zenquotes api 发送请求后收到的响应是
[
{
"q": "Be where your enemy is not.",
"a": "Sun Tzu",
"h": "<blockquote>“Be where your enemy is not.” — <footer>Sun Tzu</footer></blockquote>"
}
]
我似乎无法弄清楚为什么会出现错误,因为我没有真正看到任何问题。
这是我得到的错误:
Unexpected character encountered while parsing value: A. Path '', line 0, position 0.
错误发生在第 7 行:
JObject quote = JObject.Parse(qarray[0]["q"].ToString());
并且由于第 8 行是相同的,所以我预计会出现相同的错误。
Load a JObject from a string that contains JSON.
对于您的 "q"
和 "a"
,它只是一个 简单的 字符串,但 不是 JSON 字符串。因此你不应该使用 JObject.Parse
.
使用.ToString()
,检索q
和a
的值就足够了。
string quote = qarray[0]["q"].ToString();
string author = qarray[0]["a"].ToString();
我正在尝试使用以下代码解析 JSON 数组:
public async Task QuoteAsync()
{
await this.Context.Channel.TriggerTypingAsync();
var client = new HttpClient();
var result = await client.GetStringAsync("https://zenquotes.io/api/random");
JArray qarray = JArray.Parse(result);
JObject quote = JObject.Parse(qarray[0]["q"].ToString());
JObject author = JObject.Parse(qarray[0]["a"].ToString());
await this.ReplyAsync($"{quote} - {author}");
}
我向 zenquotes api 发送请求后收到的响应是
[
{
"q": "Be where your enemy is not.",
"a": "Sun Tzu",
"h": "<blockquote>“Be where your enemy is not.” — <footer>Sun Tzu</footer></blockquote>"
}
]
我似乎无法弄清楚为什么会出现错误,因为我没有真正看到任何问题。 这是我得到的错误:
Unexpected character encountered while parsing value: A. Path '', line 0, position 0.
错误发生在第 7 行:
JObject quote = JObject.Parse(qarray[0]["q"].ToString());
并且由于第 8 行是相同的,所以我预计会出现相同的错误。
Load a JObject from a string that contains JSON.
对于您的 "q"
和 "a"
,它只是一个 简单的 字符串,但 不是 JSON 字符串。因此你不应该使用 JObject.Parse
.
使用.ToString()
,检索q
和a
的值就足够了。
string quote = qarray[0]["q"].ToString();
string author = qarray[0]["a"].ToString();