Ebu*_*Şen 3 .net c# json json.net
我有一个json文件,其根目录具有随机名称,但子元素具有相同的结构。我想获得数组或列表中的所有子元素。
样本json文件:
{
"-LeHl495vL6vh-8CaLbD":{
"apiKey":"sr-tr-137-beea04e44cb452ba0da0ca090b7e61b4ec6ffc69"
},
"-LeHl6jrhUEMb7slZcpB":{
"apiKey":"sr-tr-137-aef7a23095c0c7baef1ef681bdd8bf9756ac2a17"
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这些课程,但无法做到。
public class RequestedReport
{
public Dictionary<string, List<ReportData>> ReportDatas { get; set; }
}
public class ReportData
{
public string apiKey { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
所以我反序列化的预期输出就像List,其中包含json文件中的所有apiKeys。
提前致谢。
在我看来,您的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; }
}
Run Code Online (Sandbox Code Playgroud)
如果您只想要API密钥列表,并且不关心与它们关联的字段名称,则可以使用:
var apiKeys = reports.Values.Select(x => x.ApiKey).ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |