我想在特定格式的 json 檔案中決議 Go 中的地圖串列。以下是我擁有的清單:
m := []map[string]interface{}{}
k1 := map[string]interface{}{"a1": "aa1", "b1": "bb1"}
k2 := map[string]interface{}{"a2": "aa2", "b2": "bb2"}
k3 := map[string]interface{}{"a3": "aa3", "b3": "bb3"}
m = append(m, k1, k2, k3)
這就是我將其決議為 json 檔案的方式。
jsonFile, _ := json.MarshalIndent(m, "", "\t")
ioutil.WriteFile("file.json", jsonFile, os.ModePerm)
在 json 檔案中,我想要:
- 開頭或結尾不能有
[或]符號。 - 每個地圖都在一個新行中
- 連續地圖之間沒有逗號
- 行首沒有空格縮進。
這是我的 json 檔案目前的樣子:
[
{
"a1": "aa1",
"b1": "bb1"
},
{
"a2": "aa2",
"b2": "bb2"
},
{
"a3": "aa3",
"b3": "bb3"
}
]
以下是我希望保存的 json 檔案中的輸出的外觀:
{
"a1": "aa1",
"b1": "bb1"
}
{
"a2": "aa2",
"b2": "bb2"
}
{
"a3": "aa3",
"b3": "bb3"
}
我意識到我可以將每張地圖都放在一個新行中。這樣就完成了。但是,在連續映射和縮進之后洗掉[或]符號、逗號還有待完成。我怎樣才能做到這一點?
uj5u.com熱心網友回復:
您想要的輸出是一系列獨立的 JSON 物件。使用 ajson.Encoder對物件進行單獨編碼。
像這樣的東西:
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
for _, v := range m {
if err := enc.Encode(v); err != nil {
panic(err)
}
}
這將輸出(在Go Playground上嘗試):
{
"a1": "aa1",
"b1": "bb1"
}
{
"a2": "aa2",
"b2": "bb2"
}
{
"a3": "aa3",
"b3": "bb3"
}
此示例將 JSON 文本寫入標準輸出。要登錄到檔案,顯然要傳遞一個*os.File值而不是os.Stdout.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/373112.html
上一篇:Go:負WaitGroup計數器
