Golang にて JSON をデコードする (string を io.Reader に変換する)

JSON を扱った簡単なテストをしたい時などに。
下記サンプルコード。

package main

import (
	"encoding/json"
	"fmt"
	"strings"
)

func main() {
	str := `{"id":1,"title":"test","description":"概要です","note":"注意事項です","url":null}`

	var res struct {
		ID int `json:"id"`
		Title string `json:"title"`
		Description string `json:"description"`
		Note string `json:"note"`
		URL string `json:"url"`
	}

	dec := json.NewDecoder(strings.NewReader(str))
	dec.Decode(&res)
	fmt.Print(res)// {1 test 概要です 注意事項です }
	fmt.Print(res.Title)// test
}

strings.NewReader(s string) を使わないと下記のようなエラーが出る。

cannot use str (type string) as type io.Reader in argument to json.NewDecoder: string does not implement io.Reader (missing Read method)

カテゴリー:Go