我在 JSON 结构中有一个目录树,我正在尝试将其格式化为纯文本。将其格式化为 XML 或 YAML 非常简单。将其格式化为纯文本比我想象的要困难得多。
JSON 结构的格式如下:
type File struct {
Name string `json:"Name"`
Children []*File `json:"Children"`
}
由于 JSON 结构允许“子级”,因此 JSON 是嵌套的,并且由于它是目录树,所以我不知道嵌套的深度(在合理范围内)。
我需要转换后的 JSON 如下所示:
base_dir
sub_dir_1
sub_dir_2
file_in_sub_dir_2
sub_dir_3
...
谁能告诉我如何以相当简单的方式做到这一点?现在,我不得不使用大量循环和制表符缩进来进行暴力破解,而且我确信 Go 中有一种更优雅的方法。
最佳答案
编写一个函数来递归打印文件及其子文件的目录树。向下递归树时增加缩进级别。
func printFile(f *File, indent string) {
fmt.Printf("%s%s\n", indent, f.Name)
for _, f := range f.Children {
printFile(f, indent+" ")
}
}
使用树的根调用函数:
printFile(root, "")
关于json - 在 GoLang 中将 JSON 目录树转换为缩进纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34388758/