亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 GoLang 中將 JSON 目錄樹轉換為縮進的純文本

在 GoLang 中將 JSON 目錄樹轉換為縮進的純文本

Go
呼啦一陣風 2021-11-29 16:52:14
我在 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 中有一種更優雅的方式。
查看完整描述

2 回答

?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

編寫一個函數來遞歸打印文件及其子文件的目錄樹。向下遞歸樹時增加縮進級別。


func printFile(f *File, indent string) {

   fmt.Printf("%s%s\n", indent, f.Name)

   for _, f := range f.Children {

     printFile(f, indent+"  ")

   }

}

使用樹的根調用函數:


printFile(root, "")


查看完整回答
反對 回復 2021-11-29
?
holdtom

TA貢獻1805條經驗 獲得超10個贊

您可以使用MarshalIndent實現這一點。這是一個go playground例子。


instance := MyStruct{12344, "ohoasdoh", []int{1, 2, 3, 4, 5}}

res, _ := json.MarshalIndent(instance, "", "  ")

fmt.Println(string(res))

這會給你類似的東西:


{

  "Num": 12344,

  "Str": "ohoasdoh",

  "Arr": [

    1,

    2,

    3,

    4,

    5

  ]

}


查看完整回答
反對 回復 2021-11-29
  • 2 回答
  • 0 關注
  • 278 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號