在.NET Core中:如何将JSON响应读取为列表[已关闭]

qxsslcnc  于 2023-10-21  发布在  .NET
关注(0)|答案(1)|浏览(102)

已关闭,此问题需要更focused。它目前不接受回答。
**想改善这个问题吗?**更新问题,使其只关注editing this post的一个问题。

11天前关闭
Improve this question
我需要帮助来读取一个JSON响应,没有像列表一样的项目列表,使用HttpClient
特别地,我想像列表一样读取这个对象:

{
    "0": {
        "cik_str": 320193,
        "ticker": "AAPL",
        "title": "Apple Inc."
    },
    "1": {
        "cik_str": 789019,
        "ticker": "MSFT",
        "title": "MICROSOFT CORP"
    },
    "2": {
        "cik_str": 1067983,
        "ticker": "BRK-B",
        "title": "BERKSHIRE HATHAWAY INC"
    }
}

完整的答案在这里:www.sec.gov/files/company_tickers.json
我需要一个代码示例。
先谢了。

bbuxkriu

bbuxkriu1#

你需要做两件事
1.从服务器加载您的Jason

var url = "https://www.sec.gov/files/company_tickers.json";
var client = new HttpClient();
var response = await client.GetAsync(url);
if (!response.IsSuccessStatusCode)
{
    Console.WriteLine($"Error: Can not connect with the server {response.StatusCode}");
    return;
}
var json = await response.Content.ReadAsStringAsync();

1.初始化JSON

  • 将以下类添加到项目中
public class CompanyTickers
{
    [JsonPropertyName("cik_str")]
    public int Cik{ get; set; }
    [JsonPropertyName("ticker")]
    public string Ticker { get; set; } = string.Empty;
    [JsonPropertyName("title")]
    public string Title { get; set; } = string.Empty;
}
  • 反序列化并使用结果
var companyTickers = JsonSerializer.Deserialize<Dictionary<int, CompanyTickers>>(json);
foreach(var company in companyTickers.Values)
{
    Console.WriteLine($"{company.Cik} {company.Ticker} {company.Title}");
}

相关问题