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

如何用C#类型描述可序列化为JSON的嵌套目录结构

需求:生成支持嵌套目录结构的可序列化C#类型与遍历函数

目录结构示例

v1
    file1.txt
    file2.txt
    common
        common.txt

目标JSON格式

要求生成的JSON需符合以下嵌套结构,键为文件夹名称,值为对应文件夹内的文件/子文件夹数组:

{
    "v1": [
        "file1.txt",
        "file2.txt",
        {
            "common": [
                "common.txt"
            ]
        }
    ]
}

现有代码局限

当前的C#函数仅能遍历一级目录,无法处理嵌套的子文件夹结构:

private static Dictionary<string, IEnumerable<string?>> Get(string baseDirectory, string version) =>
    Directory.GetDirectories($"{baseDirectory}\\{version}")
        .Select(x => new
        {
            Name = x,
            Files = Directory.GetFiles(x).Select(Path.GetFileName),
        })
        .ToDictionary(o => Path.GetRelativePath(version, o.Name), o => o.Files);

TypeScript类型参考

我曾用TypeScript定义过描述该嵌套结构的联合类型,但不清楚C#中如何实现等价逻辑:

type DirectoryStructure<K extends string, V> = {
  [P in K]: (V | DirectoryStructure<K, V>)[]
};

核心诉求

需要一个可直接序列化为JSON、支持多层嵌套的C#数据类型,同时实现对应的目录遍历函数,生成符合目标格式的结构数据。

内容的提问来源于stack exchange,提问作者katkak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:15:07