【发布时间】:2021-09-20 20:39:18
【问题描述】:
我正在尝试使用以下代码解析 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>"
}
]
我似乎无法弄清楚为什么会发生错误,因为我真的没有看到任何问题。 这是我得到的错误:
解析值时遇到意外字符:A. Path '', line 0, position 0.
错误发生在第 7 行:
JObject quote = JObject.Parse(qarray[0]["q"].ToString());
由于第 8 行是相同的,我预计会出现相同的错误。
【问题讨论】:
-
附上的JSON是完整的JSON结果吗?因为您的 JSON 结果不是一个数组,而是 single object.
-
将字符串结果复制到任何开发工具控制台并测试您的代码。
-
@Yong Shun 我在输入时犯了一个错误,它实际上是一个用方括号括起来的 json 数组
-
嗨@ShauryaChauhan,感谢您的澄清。您可以将 JSON 结果更新为 JSON 数组。
-
嗨 @Yong Shun 我知道我也可以反序列化 json 数组,但给出的答案更好:3
标签: c# json json.net discord.net