You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何访问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里的嵌套列表,所以需要逐层遍历访问:

  1. 遍历Root.Data中的每个Datum实例
  2. 对每个Datum,遍历其ChannelASVMm中的子列表
  3. 读取子列表里的每个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 18:48:24