【问题标题】:How to retrieve a JSON Array without any property names?如何检索没有任何属性名称的 JSON 数组?
【发布时间】: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&lt;string&gt;。顺便说一句,处理那些 HttpClient 对象,或者对所有对象使用静态 HttpClient。
  • 非常感谢。我猜这很明显。现在可以了。我也做了一个静态客户端,谢谢你的提示。

标签: c# json api console


【解决方案1】:

就像@Jimi 说的那样。只需要将响应反序列化为列表即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    相关资源
    最近更新 更多