【发布时间】:2017-11-13 17:54:52
【问题描述】:
我有struct的Request,值是可选的:
type Request struct {
Operation string `json:"operation"`
Key string `json:"key"`
Value string `json:"value"`
}
以及应该将json字符串解析为struct^的函数
go func() {
s := string("{'operation': 'get', 'key': 'example'}")
data := Request{}
json.Unmarshal([]byte(s), data)
log.Printf("Operation: %s", data.Operation)
}
由于某种原因 data.Operation 是空的。这里有什么问题?
【问题讨论】:
-
您还有一个没有函数调用的
go关键字。如果这是一个错字,缺少(),那么你就有一个没有任何同步的goroutine。 -
作为最常见的问题之一,不要忽略错误。 json.Unmarshal 返回错误类型。该错误的输出会告诉你你的 json 有无效的引号,在你修复它之后,会告诉你你的目标变量需要是一个指针。