クラウド時代のWebアプリケーション・スマートフォンアプリを開発・運用する会社です。 03-4577-8680 03-6673-4950

[Golang] [凡ミス] json.Marshal() の返り値が空になる

2017-06-05

次のようなコードで json.Marshal() すると中身が空になります。
https://play.golang.org/p/8p56Yit9S5

type Hoge struct {
	uuid string
	body string
}
func main() {
	h := Hoge{uuid:"foo",body:"bar"}
	fmt.Println("struct:",h)
	j,_ := json.Marshal(h)
	fmt.Println(string(j))
}

結果:

struct: {foo bar}
{}

おわかりでしょうか。おわかりですよね。

構造体の変数がPrivateになっているせいですね。
https://play.golang.org/p/0HTf4x7KWc

type Hoge struct {
 Uuid string
 Body string
}
func main() {
	 h := Hoge{Uuid:"foo",Body:"bar"}
 	fmt.Println("struct:",h)
 	j,_ := json.Marshal(h)
 	fmt.Println("json:",string(j))
}

結果:

struct: {foo bar}
    json: {"Uuid":"foo","Body":"bar"}