为了账号安全,请及时绑定邮箱和手机立即绑定

Go 映射到 Json 的列表

Go 映射到 Json 的列表

Go
摇曳的蔷薇 2022-10-17 16:44:02
我想以特定格式在 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.


查看完整回答
反对 回复 2022-10-17
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号