GoでJSONを返す

仕事でGoでAPI開発やってるのですが、JSON書き出しのところメモっておきます。

基本的なJSONの書き出し方

structでオブジェクトを定義してjson化します。

package main

import (
    "encoding/json"
    "fmt"
)

type Object struct {
    Name  string `json:"name"`
    Value string `json:"value"`
    Memo  string `json:"memo"`
}

func main() {

    o := Object{Name: "unko", Value: "ばりゅー", Memo: "めもめもー"}

    response, _ := json.Marshal(o)
    fmt.Println(string(response))
}

こんな感じのコードだと

{
  "name":"unko",
  "value":"ばりゅー",
  "memo":"めもめもー"
}

こんな感じのJSONとして書き出されます。とてもシンプルです。

書き出したくないプロパティがある場合

structの中で書き出したくないパラメータがあります。 この場合はアノテーションを使って - を与えます。

package main

import (
    "encoding/json"
    "fmt"
)

type Object struct {
    Name  string `json:"name"`
    Value string `json:"value"`
    Memo  string `json:"-"`
}

func main() {

    o := Object{Name: "unko", Value: "ばりゅー", Memo: "ここは表示されないよー"}

    response, _ := json.Marshal(o)
    fmt.Println(string(response))
}

で、こんな感じにo.Memoは表示されなくなります。

{
  "name":"unko",
  "value":"ばりゅー"
}

GoはJSONの扱いがとても簡単なのでした。