使用Json.net转换维基百科api响应
本文关键字:百科 api 响应 net Json 转换 使用 | 更新日期: 2023-09-27 18:14:28
我正在使用维基百科api查询数据,并希望将结果转换为字符串[]。
查询"test"
en.wikipedia.org/w/api.php?action=opensearch&search=test&format=json&callback=spellcheck
返回如下结果:
spellcheck(["test",["Test cricket","Test","Testicle","Testudines","Testosterone","Test pilot","Test (assessment)","Testimonial match","Testimony","Testament (band)"]])
我可以使用Json.net删除或忽略标签"拼写检查"吗?如果我使用以下代码转换响应,应用程序将崩溃:
Dictionary<string, string[]> dict = JsonConvert.DeserializeObject<Dictionary<string, string[]>>(response);
维基百科的api(使用JSON)假设您正在使用JSONP。您可以从查询字符串中完全删除回调参数:
en.wikipedia.org/w/api.php ? action = opensearch&搜索= test&格式= json
此外,您得到的结果可能无法转换为Dictionary<string, string[]>
。如果你仔细观察,它实际上是一个数组,其中第一个对象是字符串(搜索项),第二个对象是字符串列表(结果)。
下面的方法对我有用:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(
@"http://en.wikipedia.org/w/api.php?action=opensearch&search=test&format=json");
string[] searchResults = null;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
JArray objects = JsonConvert.DeserializeObject<JArray>(reader.ReadToEnd());
searchResults = objects[1].Select(j => j.Value<string>()).ToArray();
}
}