json - 在 GoLang 中将 JSON 目录树转换为缩进纯文本

标签 json go plaintext

我在 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, "")

run the code on the playground

关于json - 在 GoLang 中将 JSON 目录树转换为缩进纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34388758/

相关文章:

ruby-on-rails - 在 Ruby/Rails 上发布带有文件内容的 JSON

go - 在 go (1.18) 中对泛型进行多态实现的最佳方法是什么?

go - 尝试通过 vendor 目录部署Google Cloud功能时出错

ruby-on-rails - 仅发送纯文本电子邮件,正文中包含 Rails mime 部分

javascript - 是否可以用JQuery .ajax()实现 'PUT'数据跨域

java - 足球数据 API JSON 解析错误

javascript - 向由 ReST JSON 调用生成的 Angular Javascript 对象添加方法

go - 如何在应用程序中保持单个 AWS S3 session ?

ruby-on-rails - Ruby on Rails : How to render file as plain text (without any HTML)

c# - 检索电子邮件的 AlternateView