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
コマンドによる解法を想定していなかったため面白い解答でした。
終わりに
挑戦していただいた方々、ありがとうございました!