登录
首页 >  Golang >  Go问答

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

来源:Golang技术栈

时间:2023-03-08 16:27:45 271浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《JSON 解码为 struct 作为 interface{} 产生 map[string]interface{},而不是 struct》,介绍一下golang,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

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

基本上,我正在尝试编写一个函数,该函数接受一个结构并返回一个可以将 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)
}

以上就是《JSON 解码为 struct 作为 interface{} 产生 map[string]interface{},而不是 struct》的详细内容,更多关于golang的资料请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表