Requestのstruct
があります。値はオプションです。
type Request struct {
Operation string `json:"operation"`
Key string `json:"key"`
Value string `json:"value"`
}
そして、json文字列を解析して構造体にする必要がある関数^
go func() {
s := string("{'operation': 'get', 'key': 'example'}")
data := Request{}
json.Unmarshal([]byte(s), data)
log.Printf("Operation: %s", data.Operation)
}
何らかの理由でdata.Operationが空です。ここで何が間違っていますか?
2つの問題、最初に、jsonが無効です。"
の代わりに'
を使用する必要があります
次に、data
ではなく、&data
にマーシャリング解除する必要があります。
https://play.golang.org/p/zdMq5_ex8G
package main
import (
"fmt"
"encoding/json"
)
type Request struct {
Operation string `json:"operation"`
Key string `json:"key"`
Value string `json:"value"`
}
func main() {
s := string(`{"operation": "get", "key": "example"}`)
data := Request{}
json.Unmarshal([]byte(s), &data)
fmt.Printf("Operation: %s", data.Operation)
}
サイドノート、あなたがあなたのエラーをチェックしていたなら、あなたはこれを見たでしょう:
err := json.Unmarshal([]byte(s), data)
if err != nil {
fmt.Println(err.Error())
//json: Unmarshal(non-pointer main.Request)
}
s := string("{'operation': 'get', 'key': 'example'}")
//...
err := json.Unmarshal([]byte(s), data)
if err != nil {
fmt.Println(err.Error())
//invalid character '\'' looking for beginning of object key string
}