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}
uj5u.com熱心網友回復:
如果您希望每個 JSON 物件從新行開始,只需在每個物件后寫一個換行符。
另請注意,os.File有一種File.Write()方法可以撰寫 a []byte,因此無需將其轉換為string.
也不要忘記關閉檔案,最好是延遲:
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)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/422260.html
標籤:
上一篇:jq不會將值注入json檔案
