我正在尝试使用json.Marshal,但它拒绝接受我的struct标记。
我在做什么错了?
这是“ marshal.go”的源代码
https://play.golang.org/p/eFe03_89Ly9
extract-text-webpack-plugin
我从“ go vet marshal.go”获得这些错误消息
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json: "name"`
Age int `json: "age"`
}
func main() {
p := Person{Name: "Alice", Age: 29}
bytes, _ := json.Marshal(p)
fmt.Println("JSON = ", string(bytes))
}
运行程序时得到此输出。
./marshal.go:9: struct field tag `json: "name"` not compatible with reflect.StructTag.Get: bad syntax for struct tag value
./marshal.go:10: struct field tag `json: "age"` not compatible with reflect.StructTag.Get: bad syntax for struct tag value
请注意,字段名称与Go结构匹配,并忽略json标签。
我想念什么?
答案 0 :(得分:4)
我的天哪!我只是想通了。 json:
和字段名称"name"
之间不允许有空格。
“ go vet”错误消息("bad syntax"
)毫无帮助。
以下代码有效。你能看到区别吗?
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
p := Person{Name: "Alice", Age: 29}
bytes, _ := json.Marshal(p)
fmt.Println("JSON = ", string(bytes))
}