Closed zazazazazazazaz closed 3 years ago
testcode.go
package main
import (
"fmt"
"log"
"encoding/json"
)
type User struct {
ID int32 `json="id"`
Name string `json="name"`
PasswordHash string `json="password_hash"`
Count int32 `json="access_count`
}
func main() {
jsonData := []byte(`
{
"id": 10,
"name": "Gopher",
"password_hash": "passwordnohash",
"access_count": 99
}
`)
user := User{}
err := json.Unmarshal(jsonData, &user)
if err != nil {
log.Fatal(err)
}
fmt.Println(user)
}
:
を使う"
が抜けてるhttps://shoman.hatenablog.com/entry/2020/03/06/015441 https://noumenon-th.net/programming/2019/09/06/json-unmarshal/
お世話になっております。yrfwです。 この問題では記載ミスが原因でトラブルが発生したと考えられました。そのため以下のように変更し、testcodo.goが{10 Gopher passwordnohash 99}と正しく結果が得られることを確認いたしました。 確認のほどよろしくお願いいたします。
type User struct { ID int32 json="id" Name string json="name" PasswordHash string json="password_hash" Count int32 json="access_count } を以下に変更 type User struct { ID int32 json:"id" Name string json:"name" PasswordHash string json:"password_hash" Count int32 json:”access_count" }
概要
GoでAPIサーバを作ってみることにした! しかし、json文字列をparseするときにデータがlossしてしまう。
何故だ...Gopherくん、君はjson壊したりなどしないだろ...?
前提条件
Golang 1.14.6
jsonDataという変数の中身を変更してはならない。
初期状態
VM名 gogo には、golang 1.14.6がインストールされている。 VMのホームディレクトリにはtestcode.go が置かれている。
$ go run testcode.go を実行すると以下の結果が得られる。
実行結果 {10 Gopher 0}
終了状態
コマンド $ go run testcode.go を実行すると
{10 Gopher passwordnohash 99}
上記の結果が得られる。
また、問題の解決が永続化されている。