jsonが壊れた!!

問題文

問題文は以下の通りでした。

GoでAPIサーバを作ってみることにした! しかし、json文字列をparseするときにデータがlossしてしまう。
何故だ…Gopherくん、君はjson壊したりなどしないだろ…?

初期状態とゴール

初期状態

VM名 gogo には、golang 1.14.6がインストールされている。
VMのホームディレクトリにはtestcode.go が置かれている。

$ go run testcode.go を実行すると以下の結果が得られる。

  • 実行結果

{10 Gopher 0}

終了状態

コマンド $ go run testcode.go を実行すると

{10 Gopher passwordnohash 99}

上記の結果が得られる。

また、問題の解決が永続化されている。

解説

この問題はUserという構造体のtag指定が2点間違っていることが原因でした。

1

=を:に修正する。


変更前

json=""

変更後

json:""

実行結果

{10 Gopher passwordnohash 0}

2

“が抜けているため足す。


変更前

"access_count`

変更後

"access_count"`

・2だけを修正した場合

{10 Gopher  0}

・1と2を修正した場合

{10 Gopher passwordnohash 99}

解説は以上です。

採点基準

出力結果

50%

{10 Gopher passwordnohash 0}

100%

{10 Gopher passwordnohash 99}

講評

この問題はコンパイルでは見つけられないものが原因でした。

Golangでjsonを扱ったことがない場合には、手こずる問題であると思います。

解答について

go vet コマンドによる静的解析で、解答しているチームがありました。

作問の際に、go vet コマンドによる解法を想定していなかったため面白い解答でした。

終わりに

挑戦していただいた方々、ありがとうございました!