JSON解码为struct,因为接口{}生成map[string]接口{},而不是struct

JSON解码为struct,因为接口{}生成map[string]接口{},而不是struct,json,go,unmarshalling,Json,Go,Unmarshalling,下面是一个复制该问题的示例: 基本上,我正在尝试编写一个函数,该函数接受一个struct并返回一个可以将http请求解码为该类型的函数。不幸的是,某些类型信息正在丢失,返回的类型是map[string]接口{},而不是正确的结构类型。如何将正确的类型传递给JSON解码器?JSON解组会更好吗?这似乎有效: 谢谢最后我不得不使用reflect.ValueOf(I),Elem().Interface()来让它工作。 func requestParser(i interface{}) parser

下面是一个复制该问题的示例:

基本上,我正在尝试编写一个函数,该函数接受一个struct并返回一个可以将http请求解码为该类型的函数。不幸的是,某些类型信息正在丢失,返回的类型是map[string]接口{},而不是正确的结构类型。如何将正确的类型传递给JSON解码器?JSON解组会更好吗?

这似乎有效:


谢谢最后我不得不使用reflect.ValueOf(I),Elem().Interface()来让它工作。
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)
}