如何使用 Golang 将数据附加到新行上的 json 文件
How to append data to a json file on new line using Golang
type dataOP struct {
Opcode_name string `json:"opcode_name"`
ExeTime int `json:"exeTime"`
}
func main() {
book := dataOP{Opcode_name: "ADD", ExeTime: 5}
byteArray, err := json.Marshal(book)
if err != nil {
fmt.Println(err)
}
f, err := os.OpenFile("./data.json", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
if err != nil {
fmt.Println(err)
return
}
n, err := io.WriteString(f, string(byteArray))
if err != nil {
fmt.Println(n, err)
}
}
我想使用 Golang 将数据附加到新行上的 json 文件。上面的代码将json对象一个接一个的附加上去,比如
{"opcode_name":"ADD","exeTime":5}{"opcode_name":"ADD","exeTime":5}{"opcode_name":"ADD","exeTime":5}
但我想在新行中附加这些 json 个对象(json 个对象由新行分隔)。
{"opcode_name":"ADD","exeTime":5}
{"opcode_name":"ADD","exeTime":5}
{"opcode_name":"ADD","exeTime":5}
如果您希望每个 JSON 对象都在一个新行开始,只需在每个对象后写一个换行符即可。
还要注意,os.File
has a File.Write()
方法写了一个[]byte
,所以不用转成string
。
另外别忘了关闭文件,最好是deferred:
f, err := os.OpenFile("./data.json", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
if err != nil {
fmt.Println(err)
return
}
defer f.Close()
n, err := f.Write(byteArray)
if err != nil {
fmt.Println(n, err)
}
if n, err = f.WriteString("\n"); err != nil {
fmt.Println(n, err)
}
另请注意,您可以像这样通过一次调用来编写字节切片和换行符:
if _, err := fmt.Fprintf(f, "%s\n", byteArray); err != nil {
fmt.Println(err)
}
type dataOP struct {
Opcode_name string `json:"opcode_name"`
ExeTime int `json:"exeTime"`
}
func main() {
book := dataOP{Opcode_name: "ADD", ExeTime: 5}
byteArray, err := json.Marshal(book)
if err != nil {
fmt.Println(err)
}
f, err := os.OpenFile("./data.json", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
if err != nil {
fmt.Println(err)
return
}
n, err := io.WriteString(f, string(byteArray))
if err != nil {
fmt.Println(n, err)
}
}
我想使用 Golang 将数据附加到新行上的 json 文件。上面的代码将json对象一个接一个的附加上去,比如
{"opcode_name":"ADD","exeTime":5}{"opcode_name":"ADD","exeTime":5}{"opcode_name":"ADD","exeTime":5}
但我想在新行中附加这些 json 个对象(json 个对象由新行分隔)。
{"opcode_name":"ADD","exeTime":5}
{"opcode_name":"ADD","exeTime":5}
{"opcode_name":"ADD","exeTime":5}
如果您希望每个 JSON 对象都在一个新行开始,只需在每个对象后写一个换行符即可。
还要注意,os.File
has a File.Write()
方法写了一个[]byte
,所以不用转成string
。
另外别忘了关闭文件,最好是deferred:
f, err := os.OpenFile("./data.json", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
if err != nil {
fmt.Println(err)
return
}
defer f.Close()
n, err := f.Write(byteArray)
if err != nil {
fmt.Println(n, err)
}
if n, err = f.WriteString("\n"); err != nil {
fmt.Println(n, err)
}
另请注意,您可以像这样通过一次调用来编写字节切片和换行符:
if _, err := fmt.Fprintf(f, "%s\n", byteArray); err != nil {
fmt.Println(err)
}