JSON解码为struct作为接口{}产生map [string] interface {},而不是struct

时间:2016-08-20 21:32:57

标签: json go unmarshalling

这是一个复制问题的游乐场: https://play.golang.org/p/GgHsLffp1G

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

1 个答案:

答案 0 :(得分:1)

这似乎有效:

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