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 会更好吗?

这似乎有效:

Playground

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)
}