Golang如何将数据转换为JSON并格式化保存到文件

Golang如何将数据转换为JSON并格式化保存到文件 我正在将数据转换为JSON格式,并尝试将这些数据写入文件,但数据并未按预期写入文件。

例如:

我使用

DetailJson, err := json.MarshalIndent(Data, "", "\t")

outpuFile := os.create(File)
outPutfile.Write(*DetailJson)

这段代码可以正常工作,但数据在文本文件中是以以下格式插入的: {“ID”:12345} {“ID”:45678}

但我希望是以下格式,有人能帮我解决这个问题吗?

[ {“ID”:12345}, {“ID”:45678}, ]


更多关于Golang如何将数据转换为JSON并格式化保存到文件的实战教程也可以访问 https://www.itying.com/category-94-b0.html

6 回复

你的 Data 类型及其值是什么?

更多关于Golang如何将数据转换为JSON并格式化保存到文件的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我正在从数据库中读取数据,因此希望将每条记录保存为新的JSON对象。

这是一个包含一个字段ID且类型为String的结构体。

单个结构体不会被渲染为JSON列表。不过,单个结构体也不会被渲染为两个JSON对象,所以你隐藏了代码中的一些相关部分。

你在输出中看到方括号 [ ],是因为你正在对切片或(对象的)数组进行带缩进的编组。

你可以使用 json.MarshalIndent 将数据序列化为格式化的 JSON 数组。首先,确保你的数据是一个切片(slice),这样它会被编码为 JSON 数组。然后,使用 json.MarshalIndent 来添加缩进和换行,使输出更易读。最后,将结果写入文件。

以下是一个示例代码:

package main

import (
    "encoding/json"
    "os"
)

type Item struct {
    ID int `json:"ID"`
}

func main() {
    // 假设 Data 是一个 Item 切片
    Data := []Item{
        {ID: 12345},
        {ID: 45678},
    }

    // 使用 json.MarshalIndent 将数据转换为格式化的 JSON
    DetailJson, err := json.MarshalIndent(Data, "", "\t")
    if err != nil {
        panic(err)
    }

    // 创建或打开文件
    outputFile, err := os.Create("output.json")
    if err != nil {
        panic(err)
    }
    defer outputFile.Close()

    // 将 JSON 数据写入文件
    _, err = outputFile.Write(DetailJson)
    if err != nil {
        panic(err)
    }
}

运行此代码后,output.json 文件的内容将如下所示:

[
	{
		"ID": 12345
	},
	{
		"ID": 45678
	}
]

如果你希望 JSON 数组的每个元素在同一行,可以调整 json.MarshalIndent 的缩进参数,但通常使用制表符或空格缩进是标准做法。如果你坚持要得到你描述的格式(每个对象在一行,用逗号分隔),可以手动构建 JSON 字符串,但使用 json.MarshalIndent 是更规范的方法。

回到顶部