尝试将 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>&ldquo;Be where your enemy is not.&rdquo; &mdash; <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 行是相同的,所以我预计会出现相同的错误。

根据JObject.Parse

Load a JObject from a string that contains JSON.

对于您的 "q""a",它只是一个 简单的 字符串,但 不是 JSON 字符串。因此你不应该使用 JObject.Parse.

使用.ToString(),检索qa的值就足够了。

string quote = qarray[0]["q"].ToString();
string author = qarray[0]["a"].ToString();

Sample program