尝试将 json 数组解析为 json 对象时出错

问题描述

我正在尝试使用此代码解析 json 数组

FirebaseAuth.instance

我向 zenquotes api 发送请求后收到的响应是

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}");
        }

我似乎无法弄清楚错误发生的原因,因为我真的没有看到任何问题 这是我得到的错误

[
  {
    "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>"
  }
]

错误发生在第 7 行

JObject quote = JObject.Parse(qarray[0]["q"].ToString());

并且由于第 8 行是相同的,我预计会出现相同的错误

解决方法

根据JObject.Parse

从包含 JSON 的字符串加载 JObject。

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

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

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

Sample program