鳩舎

レースしない

golang JSON struct tag

go で JSON のパースする時は、こんな感じ

package main

import(
  "fmt"
  "encoding/json"
)

var text = []byte(`{"Name":"sho"}`)

func main() {
  type Config struct {
    Name string
  }

  config := &Config{}
  json.Unmarshal(text, &config)

  fmt.Printf("%+v\n", config)
}

ただ、これだと Namename しかパースしてくれない。構造体のメンバの名前は "Addr" にしたいけど、 JSON では "address" と書きたいみたいな要求があるときは、tag をつけておくといい。

package main

import(
  "fmt"
  "encoding/json"
)

var text = []byte(`{"onamae":"sho"}`)

func main() {
  type Config struct {
    Name string `json:"onamae"`
  }

  config := &Config{}
  json.Unmarshal(text, &config)

  fmt.Printf("%+v\n", config)
}

JSON では Underscore case で、 Go では Upper camel case 書きたいみたいなわがままさんはこういうことするといい。 JSON でどうかけばいいかわかりやすくなるし一石二鳥っぽい。