Go言語でJSONをCSVに変換する方法

yurupuro csv to json convert Go言語
この記事は約2分で読めます。

この記事の最終更新日: 2023年2月1日

Go言語でJSONをCSVに変換するには、encoding/csvパッケージを使用します。

package main

import (
	"encoding/csv"
	"encoding/json"
	"fmt"
	"os"
)

func main() {
	// JSONの読み込み
	file, err := os.Open("file.json")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close()

	var data []map[string]interface{}
	err = json.NewDecoder(file).Decode(&data)
	if err != nil {
		fmt.Println(err)
		return
	}

	// JSONからCSVに変換
	file, err = os.Create("file.csv")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close()

	writer := csv.NewWriter(file)
	defer writer.Flush()

	header := []string{}
	for k := range data[0] {
		header = append(header, k)
	}
	err = writer.Write(header)
	if err != nil {
		fmt.Println(err)
		return
	}

	for _, item := range data {
		var record []string
		for _, h := range header {
			record = append(record, item[h].(string))
		}
		err = writer.Write(record)
		if err != nil {
			fmt.Println(err)
			return
		}
	}
}

コメント

タイトルとURLをコピーしました