[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