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

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
]
}
- 2 回答
- 0 關注
- 278 瀏覽
添加回答
舉報
0/150
提交
取消