【发布时间】:2020-09-06 11:02:11
【问题描述】:
我通常不熟悉使用 API 和 JSON。到目前为止,我已经做了几个练习,但偶然发现了这个 JSON 文件:Link 并且不知道如何检索它。这是我的 API 代码。GetCategories 任务是有问题的。感谢任何花时间阅读本文并帮助我的人。
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace ChuckNorris.API
{
public class ChuckClient
{
public async Task<ChuckNorrisJoke> GetARandomChuckNorrisJoke()
{
string url = $"https://api.chucknorris.io/jokes/random";
HttpClient client = new HttpClient();
var response = await client.GetStringAsync(url);
return JsonConvert.DeserializeObject<ChuckNorrisJoke>(response);
}
public async Task<ChuckNorrisJoke> GetARandomChuckNorrisJokeFromCategory(string category)
{
string url = $"https://api.chucknorris.io/jokes/random?category={category}";
HttpClient client = new HttpClient();
var response = await client.GetStringAsync(url);
return JsonConvert.DeserializeObject<ChuckNorrisJoke>(response);
}
public async Task<List<ChuckNorrisJoke>> GetCategories()
{
string url = $"https://api.chucknorris.io/jokes/categories";
HttpClient client = new HttpClient();
var response = await client.GetStringAsync(url);
return JsonConvert.DeserializeObject<List<ChuckNorrisJoke>>(response);
}
public async Task<ChuckNorrisJoke> GetFreeTextSearchJoke(string query)
{
string url = $"https://api.chucknorris.io/jokes/search?query={query}";
HttpClient client = new HttpClient();
var response = await client.GetStringAsync(url);
return JsonConvert.DeserializeObject<ChuckNorrisJoke>(response);
}
}
public class ChuckNorrisJoke
{
[JsonProperty("Categories")]
public string[] Categories { get; set; }
[JsonProperty("Value")]
public string Value { get; set; }
[JsonProperty("Total")]
public int Total { get; set; }
[JsonProperty("Result")]
public ChuckNorrisJoke[] Result { get; set; }
}
}
【问题讨论】:
-
那(在您的链接中)只是一个字符串数组,您可以反序列化为
List<string>。顺便说一句,处理那些 HttpClient 对象,或者对所有对象使用静态 HttpClient。 -
非常感谢。我猜这很明显。现在可以了。我也做了一个静态客户端,谢谢你的提示。