実現したいこと
jsonファイルを改行区切りのjson(ndjson,jsonl)に変換する。
前提
Go言語でjsonファイルを改行区切り形式のjsonに変換したいです。
Goのバージョンは1.20です。
なかなかうまく変換することができません。。。
よろしくお願いします。
試したソースコード
main.go
1package main 2 3import ( 4 "bufio" 5 "encoding/json" 6 "fmt" 7 "io/ioutil" 8 "os" 9) 10 11func main() { 12 // JSONファイルを開く 13 jsonFile, err := os.Open("test2.json") 14 if err != nil { 15 panic(err) 16 } 17 defer jsonFile.Close() 18 19 jsonBody, err := ioutil.ReadAll(jsonFile) 20 if err != nil { 21 panic(err) 22 } 23 24 // Convert json string to map[string]interface{} 25 var mapData map[string]interface{} 26 if err := json.Unmarshal(jsonBody, &mapData); err != nil { 27 fmt.Println(err) 28 } 29 30 // JSONLファイルを開く 31 jsonlFile, err := os.Create("output.jsonl") 32 if err != nil { 33 panic(err) 34 } 35 defer jsonlFile.Close() 36 37 // JSONデータをエンコードしてJSONLファイルに書き込む 38 writer := bufio.NewWriter(jsonlFile) 39 encoder := json.NewEncoder(writer) 40 for _, datum := range mapData { 41 err = encoder.Encode(datum) 42 if err != nil { 43 panic(err) 44 } 45 } 46 writer.Flush() 47}
変換前のjsonファイル
test2.json
1{ 2 "name": "Morpheus", 3 "job": "Leader", 4 "id": "199", 5 "createdAt": "2020-02-20T11:00:28.107Z" 6}
変換後のjsonファイル
"Leader" "199" "2020-02-20T11:00:28.107Z" "Morpheus"
どう変換したいのでしょうか?
以下のような形式にしたいです。
また複数データがあれば、そのデータが1行ごとに記述されるようにしたいです。
{"name": "Morpheus","job": "Leader","id": "199", "createdAt": "2020-02-20T11:00:28.107Z"}
お返事はコメント欄ではなく質問文を編集して書いてください。その際、変換したい形式についても```で前後を囲っておくと、変換前の入力や今の出力結果と比較しやすいです。
mapData をそのまま encoder.Encode すれば 1 行で出力されると思いますけど、それじゃ駄目でしょうか?

回答1件
あなたの回答
tips
プレビュー