JSON 解码为 struct 作为 interface{} 产生 map[string]interface{},而不是 struct
JSON decode into struct as interface{} yields map[string]interface{}, not struct
这是一个复制问题的围棋游乐场:
https://play.golang.org/p/GgHsLffp1G
基本上,我正在尝试编写一个采用结构的函数和 returns 一个可以将 http 请求解码为该类型的函数。不幸的是,一些类型信息正在丢失,返回的类型是 map[string]interface{} 而不是正确的结构类型。如何将正确的类型传递给 JSON 解码器? JSON unmarshal 会更好吗?
这似乎有效:
func requestParser(i interface{}) parser {
return func(r io.Reader) (interface{}, error) {
json.NewDecoder(r).Decode(i)
return reflect.ValueOf(i).Elem(), nil
}
}
func main() {
var foo Foo
s := "{\"Name\":\"Logan\"}"
p := requestParser(&foo)
}
这是一个复制问题的围棋游乐场: https://play.golang.org/p/GgHsLffp1G
基本上,我正在尝试编写一个采用结构的函数和 returns 一个可以将 http 请求解码为该类型的函数。不幸的是,一些类型信息正在丢失,返回的类型是 map[string]interface{} 而不是正确的结构类型。如何将正确的类型传递给 JSON 解码器? JSON unmarshal 会更好吗?
这似乎有效:
func requestParser(i interface{}) parser {
return func(r io.Reader) (interface{}, error) {
json.NewDecoder(r).Decode(i)
return reflect.ValueOf(i).Elem(), nil
}
}
func main() {
var foo Foo
s := "{\"Name\":\"Logan\"}"
p := requestParser(&foo)
}