본문 바로가기
Golang

JSON data 사용하기

by 시바도지 2022. 4. 23.
반응형

encoding/json 패키지를 사용하여 JSON 데이터를 사용할 수 있다.

 

 

1. Json 인코딩


Json 포멧으로 변환하기 위해서는 Marshal() 함수를 사용한다.

 

 

다음의 예제는 json 데이터를 변환하여 결과를 출력한다.

package main

import (
	"encoding/json"
	"fmt"
)

// json key 값
type User struct {
	// struct 내에 field 선언 후 뒤에 `json:"[key]"` 를 붙이면 key 값을 따로 지정할 수 있다.
	Id string `json:"id"`
	Pw int    `json:"password"`
}

func main() {
	// json value 값 지정
	userInfo := User{"uhm", 1234}

	// JSON 인코딩
	byte, err := json.Marshal(userInfo)
	if err != nil {
		fmt.Println(err)
	}

	// JSON 바이트를 문자열로 변경
	jsonStr := string(byte)

	// 결과 출력
	fmt.Println(jsonStr) // {"id":"uhm","password":1234}
}

 

 

2. Json 디코딩


Json으로 인코딩된 데이터를 다시 디코딩하기 위해서는 Unmarshal()함수를 사용한다.

 

 

다음의 예제는 JSON 데이터를 디코딩 하여 결과를 출력합니다.

type User struct {
    Id string
    pw int
}

func main() {
	/*
		이런 데이터를 받았다고 가정한다...
		{
			"id" : "uhm",
			"password" : 1234
		}

	*/
	jsonData := User{"uhm", 1234}

	// json 인코딩
	jsonByte, err := json.Marshal(jsonData)
	if err != nil {
		fmt.Println(err)
	}

	// JSON 디코딩
	var user User
	err = json.Unmarshal(jsonByte, &user)
	if err != nil {
		fmt.Println(err)
	}

	fmt.Println("ID: %s", user.Id)
    fmt.Println("PW: %d", user.Pw)
}

 

만약 json 디코딩 시 json 데이에 매칭되는 필드가 struct에 없다면, 그 값은 무시하고 처리된다.

반응형

'Golang' 카테고리의 다른 글

Golang 문자열 다루기 (strconv, strings)  (0) 2022.12.10
Golang Time  (0) 2022.09.13
import 의존성 오류  (0) 2022.06.29
ioutil 패키지를 사용하여 파일 읽기/쓰기  (0) 2022.04.23
Local package import 오류  (0) 2022.02.21

댓글