问题描述
我正在尝试使用此代码解析 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>“Be where your enemy is not.” — <footer>Sun Tzu</footer></blockquote>"
}
]
错误发生在第 7 行
JObject quote = JObject.Parse(qarray[0]["q"].ToString());
并且由于第 8 行是相同的,我预计会出现相同的错误
解决方法
从包含 JSON 的字符串加载 JObject。
对于您的 "q"
和 "a"
,它只是一个简单字符串,但不是 JSON 字符串。因此,您不应使用 JObject.Parse
。
使用 .ToString()
,检索 q
和 a
的值就足够了。
string quote = qarray[0]["q"].ToString();
string author = qarray[0]["a"].ToString();