実現したいこと
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"
0 コメント