[Go] KeyとValueしかないJSONを構造体にパースする

Golang にて JSON の値を構造体に当てはめる方法です。
下記のように、中身の個数が異なる可能性がある場合に対応させます。

{
    "key1":"value1"
}
{
    "key1":"value1",
    "key2":"value2"
}

Key と Value しかない場合で、複数件数あることから、map[string]string へ JSON を展開することができます。1つずつ値を取り出すには、for key, value := range result1 といった形で Key と Value を分けることができます。

package main

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

func main() {
	jsonStr1 := `{
        "key1":"value1",
        "key2":"value2"
    }`
	jsonStr2 := `{
        "key1":"value1"
    }`

	var result1 map[string]string
	var result2 map[string]string

	err1 := json.Unmarshal([]byte(jsonStr1), &result1)
	if err1 != nil {
		log.Fatal(err1)
	}

	err2 := json.Unmarshal([]byte(jsonStr2), &result2)
	if err2 != nil {
		log.Fatal(err2)
	}

	fmt.Printf("%v\n", result1)
	fmt.Printf("%v\n", result2)

	fmt.Println("result1:")
	for key, value := range result1 {
		fmt.Printf("Key: %s, Value: %s\n", key, value)
	}

	fmt.Println("result2:")
	for key, value := range result2 {
		fmt.Printf("Key: %s, Value: %s\n", key, value)
	}
}

実行した結果です。

go run ./main.go
map[key1:value1 key2:value2]
map[key1:value1]
result1:
Key: key1, Value: value1
Key: key2, Value: value2
result2:
Key: key1, Value: value1

GolangGolang

Posted by kidatti