如何用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
相关产品推荐
相关产品推荐

