Как получить массив JSON без каких-либо имен свойств?

#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. Ответ просто нужно было десериализовать в список.