読者です 読者をやめる 読者になる 読者になる

Go言語 / golangのJSONの生成は構造体無しでjavascript並に簡単にできる

f:id:nasust:20161122141513p:plain The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/) CC3.0

こんにちはnasustです。 Go言語 / golangJSONの生成はjavascript並に簡単にできます。 他サイトのJSONの生成の紹介が構造体しか無かったので、mapで簡単に出来ることを解説します。

json.Marshalで与えられる型でmap[string]interface{}を標準でサポートしています。ですので下記のコードのようにjavascript並に簡単にJSONを生成できます。

package main

import (
    "encoding/json"
    "fmt"
)

type M map[string]interface{}
type A []interface{}

func main() {
    values := M{
        "a": "a",
        "b": func() A {
            return A{1, 2, 3}
        }(),
        "c": A{"va", "vb", "vc"},
        "d": M{
            "dd": 1.1,
            "cc": 2.2,
            "ee": nil,
            "qq": true}}

    bytes, err := json.MarshalIndent(values, "", "    ")
    if err == nil {
        jsonstring := string(bytes)
        fmt.Println(jsonstring)
    } else {
        fmt.Println("Err: ", err)
    }

}

結果

{
    "a": "a",
    "b": [
        1,
        2,
        3
    ],
    "c": [
        "va",
        "vb",
        "vc"
    ],
    "d": {
        "cc": 2.2,
        "dd": 1.1,
        "ee": null,
        "qq": true
    }
}
広告を非表示にする