반응형
Go에서 Json을 CSV로 변경하기 위해서는 encoding/csv와 encodeing/json 패캐지를 사용한다.
package main
import (
"encoding/csv"
"encoding/json"
"fmt"
"log"
"os"
)
func main() {
// 예제 데이터
jsonData := `[{"name":"Uhm", "age":19, "city":"Soeul"},
{"name":"Jun", "age":23, "city":"Tokyo"},
{"name":"Sik", "age":27, "city":"Los Angeles"}]`
// json 데이터를 슬라이스 형태의 맵으로 변환.
var data []map[string]interface{}
err := json.Unmarshal([]byte(jsonData), &data)
if err != nil {
log.Fatal(err)
}
// csv 파일 생성
file, err := os.Create("data.csv")
if err != nil {
log.Fatal(err)
}
defer file.Close()
// csv writer 생성
writer := csv.NewWriter(file)
defer writer.Flush()
// 파일 헤더 레코드 작성
header := []string{"name", "age", "city"}
err = writer.Write(header)
if err != nil {
log.Fatal(err)
}
// data 행 작성
// data 행은 for 루프를 사용하여 맵 형태로 변환한 데이터 슬라이스에서 추출
for _, row := range data {
name := row["name"].(string)
age := fmt.Sprintf("%v", row["age"])
city := row["city"].(string)
err := writer.Write([]string{name, age, city})
if err != nil {
log.Fatal(err)
}
}
}
반응형
'Golang' 카테고리의 다른 글
Golang 임시 파일 생성(os.CreateTemp) (0) | 2023.03.27 |
---|---|
Golang CSV를 JSON 변환 (0) | 2023.03.15 |
Golang 디렉토리 생성(os.Mkdir, os.MkdirAll) (0) | 2023.03.15 |
Golang sync.WaitGroup (0) | 2023.03.06 |
omitempty (0) | 2023.01.10 |
댓글