본문 바로가기
Golang

Golang CSV를 JSON 변환

by 시바도지 2023. 3. 15.
반응형

Json을 csv로 변환하는 방법은 다음의 링크를 참고하면 된다.

https://zerostarting.tistory.com/40

 

Golang JSON을 CSV로 변환

Go에서 Json을 CSV로 변경하기 위해서는 encoding/csv와 encodeing/json 패캐지를 사용한다. package main import ( "encoding/csv" "encoding/json" "fmt" "log" "os" ) func main() { // 예제 데이터 jsonData := `[{"name":"Uhm", "age":19, "ci

zerostarting.tistory.com

 

다음의 예제는 csv 파일이 이미 존재한다는 가정하에 실행한다.

 

data.csv

name,age,city
Uhm,19,Soeul
Jun,23,Tokyo
Sik,27,Los Angeles

 

main.go

package main

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

func main() {
	// csv 파일 열기
	file, err := os.Open("data.csv")
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()

    // csv 파일 읽기
	reader := csv.NewReader(file)
	records, err := reader.ReadAll()
	if err != nil {
		log.Fatal(err)
	}

    // data를 저장할 맵의 슬라이스 생성
    var data []map[string]interface{}

    // for 루프를 돌며 각 행을 맵 형태로 변환
    for i, record := range records {
		// Skip the header row
		if i == 0 {
			continue
		}

        // 각 행을 맵 형태로 변환
        row := make(map[string]interface{})

        // 루프를 돌며 각 열을 맵에 추가
        for j, value := range record {
			row[records[0][j]] = value
		}

        // 맵을 슬라이스에 추가
        data = append(data, row)
	}

    // 데이터를 JSON 형태로 변환
    jsonData, err := json.Marshal(data)
	if err != nil {
		log.Fatal(err)
	}

    // JSON 데이터 출력
    fmt.Println(string(jsonData))
}

 

반응형

'Golang' 카테고리의 다른 글

Golang UUID 생성  (0) 2023.03.27
Golang 임시 파일 생성(os.CreateTemp)  (0) 2023.03.27
Golang JSON을 CSV로 변환  (0) 2023.03.15
Golang 디렉토리 생성(os.Mkdir, os.MkdirAll)  (0) 2023.03.15
Golang sync.WaitGroup  (0) 2023.03.06

댓글