#c# #json #api #console
#c# #json #API #консоль
Вопрос:
Я новичок в использовании 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; }
}
}
Комментарии:
1. Это (в вашей ссылке) просто массив строк, который вы можете десериализовать в
List<string>
. Кстати, избавьтесь от этих объектов HttpClient или используйте статический HttpClient для всех.2. Большое вам спасибо. Я думаю, это было довольно очевидно. Теперь это работает. Я также создал статический клиент, спасибо за совет.
Ответ №1:
Как сказал @Jimi. Ответ просто нужно было десериализовать в список.