Home About
golang, json

Golang で JSON を Marshal, Unmarshal する(備忘録)

Golang での基本の JSON 処理をメモ。

なお、OS は Ubuntu 20.04, go version go1.16.4 linux/amd64 で試しています。

Marshal, Unmarshal JSON

package main

import (
	"encoding/json"
	"fmt"
)

type Product struct {
	Name  string `json:"name"`
	Price int    `json:"price"`
}

func main() {
	// 0)
	myjson := []byte("{\"name\":\"Macbook Air\", \"price\": 128000}")
	fmt.Println(fmt.Sprintf("%s", myjson))

	// 1)
	var aProduct Product
	err := json.Unmarshal(myjson, &aProduct)
	if err == nil {
		fmt.Println(aProduct.Name)
		fmt.Println(aProduct.Price)

		// 2)
		myjson2, err := json.Marshal(aProduct)
		if err == nil {
			fmt.Println(fmt.Sprintf("%s", myjson2))
		}
	}
}

実行:

$ go run main.go
{"name":"Macbook Air", "price": 128000}
Macbook Air
128000
{"name":"Macbook Air","price":128000}

できました。

処理対象となる JSON のスキーマが固定されていれば、Golang での JSON 処理はわかりやすい。