gpt4 book ai didi

c# - 使用随机根名称的 c# 反序列化 json

转载 作者:行者123 更新时间:2023-11-30 14:05:35 25 4
gpt4 key购买 nike

我有一个 json 文件,它在根元素中具有随机名称,但在子元素中具有相同的结构。我想获取数组或列表中的所有子元素。

示例 json 文件:

{  
"-LeHl495vL6vh-8CaLbD":{
"apiKey":"sr-tr-137-beea04e44cb452ba0da0ca090b7e61b4ec6ffc69"
},
"-LeHl6jrhUEMb7slZcpB":{
"apiKey":"sr-tr-137-aef7a23095c0c7baef1ef681bdd8bf9756ac2a17"
}
}

我试过这些类(class),但做不到。

public class RequestedReport
{
public Dictionary<string, List<ReportData>> ReportDatas { get; set; }
}

public class ReportData
{
public string apiKey { get; set; }
}

所以我预期的反序列化输出类似于 List,其中包含 json 文件中的所有 apiKey。

提前致谢。

最佳答案

在我看来,您的 JSON 代表一个 Dictionary<string, ReportData>直接地。没有包装器对象,也没有涉及列表。如果将 JSON 反序列化为该类型,应该没问题。这是一个完整的示例:

using System;
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;

class Program
{
static void Main()
{
var json = File.ReadAllText("test.json");
var reports = JsonConvert.DeserializeObject<Dictionary<string, ReportData>>(json);

foreach (var pair in reports)
{
Console.WriteLine($"{pair.Key}: {pair.Value.ApiKey}");
}
}
}

public class ReportData
{
[JsonProperty("apiKey")]
public string ApiKey { get; set; }
}

如果您只想要 API key 列表,而不关心与它们关联的字段名称,您可以使用:

var apiKeys = reports.Values.Select(x => x.ApiKey).ToList();

关于c# - 使用随机根名称的 c# 反序列化 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56079608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com