如何访问JSON反序列化后含嵌套List的类中数据?
问题:读取JSON中嵌套的List<List>类型数据
已在VSCode中实现从JSON文件读取数据,创建了对应C#类,能正常获取SampleRate这类简单属性的值,但卡在读取Datum类中嵌套的List<List<double>>类型的ChannelASVMm属性。
现有代码
namespace TestDeserialize { public class DataInfo { [JsonProperty("Sample rate")] public int SampleRate { get; set; } } public class Datum { public string Trigger { get; set; } [JsonProperty("Channel :AS_V[mm]")] public List<List<double>> ChannelASVMm { get; set; } // 需要读取该属性的值 } public class Root { public DataInfo Data_info { get; set; } public List<Datum> Data { get; set; } } public class Program { public static void Main() { string filename2 = @"C:\Users\10606167\TestDatenAbstand.json"; Root datum = JsonConvert.DeserializeObject<Root>(File.ReadAllText(filename2)); Console.WriteLine($"Samplerate: {datum.Data_info.SampleRate}"); } } }
JSON文件内容
{"Data_info":{"File name":"C:\\Dewesoft\\Data\\Test(2).dxd","Start time":"22.08.2022","Number of channels":1,"Sample rate":100,"Reduced rate":10}, "Events":[{"Event Type:":1,"Event :":"Speicherung gestartet um","Time:":0,"Comment":""},{"Event Type:":2,"Event :":"Speicherung gestoppt um","Time:":1.72,"Comment":""}] , "Data":[ { "Trigger" : "Data1", "Channel :AS_V[mm]":[ [0, 1.57027852535248] ] }]}
解决方案
因为Root.Data是List<Datum>类型,ChannelASVMm又是每个Datum里的嵌套列表,所以需要逐层遍历访问:
- 遍历
Root.Data中的每个Datum实例 - 对每个
Datum,遍历其ChannelASVMm中的子列表 - 读取子列表里的每个double值
修改Main方法如下:
public static void Main() { string filename2 = @"C:\Users\10606167\TestDatenAbstand.json"; Root root = JsonConvert.DeserializeObject<Root>(File.ReadAllText(filename2)); Console.WriteLine($"Samplerate: {root.Data_info.SampleRate}"); // 遍历Data列表中的每个Datum foreach (var dataItem in root.Data) { Console.WriteLine($"\nTrigger: {dataItem.Trigger}"); Console.WriteLine("ChannelASVMm数据:"); // 遍历嵌套的List<double> foreach (var subList in dataItem.ChannelASVMm) { // 输出子列表中的每个数值 Console.WriteLine(string.Join(", ", subList)); } } }
输出示例
Samplerate: 100 Trigger: Data1 ChannelASVMm数据: 0, 1.57027852535248
内容的提问来源于stack exchange,提问作者yannick
相关产品推荐
相关产品推荐

