登录
首页 >  Golang >  Go问答

数组键的问题导致 ioutil.ReadAll 和 unmarshal 嵌套时引发了响应错误

来源:stackoverflow

时间:2024-02-08 21:30:24 177浏览 收藏

大家好,我们又见面了啊~本文《数组键的问题导致 ioutil.ReadAll 和 unmarshal 嵌套时引发了响应错误》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

为了给您提供上下文,我正在卷曲到第三方端点,响应与此类似

{
    "code": 200,
    "message": "success",
    "data": {
        "list": [
            {
               "user": "user a",
               "status" : "normal"
            },
            {
                "user": "user b",
               "status" : "normal"
            }
        ],
        "page": 1,
        "total_pages": 5000
    }
}

我的结构类似于

type user struct {
    code    int    `json:"code"`
    message string `json:"message"`
    data    struct {
        list []struct {
            user   string `json:"user"`
            status string `json:"status"`
        } `json:"list"`
        page       int `json:"page"`
        totalpages int `json:"total_pages"`
    } `json:"data"`
}

请检查我的代码

defer response.body.close()
io_response, err := ioutil.readall(response.body)

returndata := user{}
err = jsoniter.unmarshal([]byte(io_response), &returndata)
if err != nil {
   log.println(err)
}

上面的代码返回错误

decode slice: expect [ or n, but found {, error found in #10 byte of ...|:{"list":{"1"

当我执行 fmt.println(string(io_response)) 时,它的返回如下:

{ "code": 200, "message": "成功", "data": { “列表”: { “1”:{ “用户”:“用户a”, “状态”:“正常” }, “2”:{ “用户”:“用户a”, “状态”:“正常” } }, “页”:1, “总页数”:2000 } }

您能教我如何正确阅读响应或如何对其进行整理吗? 谢谢


正确答案


你可以像这样定义你的结构:

type User struct {
    Code    int    `json:"code"`
    Message string `json:"message"`
    Data    struct {
        List map[string]struct {
            User   string `json:"user"`
            Status string `json:"status"`
        } `json:"list"`
        Page       int `json:"page"`
        TotalPages int `json:"total_pages"`
    } `json:"data"`
}

今天关于《数组键的问题导致 ioutil.ReadAll 和 unmarshal 嵌套时引发了响应错误》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

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