我想以特定格式在 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"}我意识到我可以将每张地图都放在新的一行中。这样就完成了。但是,在连续映射和缩进之后删除[或]符号、逗号还有待完成。我怎样才能做到这一点?
1 回答

慕容森
TA贡献1853条经验 获得超18个赞
您想要的输出是一系列独立的 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.
- 1 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消