登录
首页 >  Golang >  Go问答

golang中为什么无法将JSON字段值转换为字节?

来源:stackoverflow

时间:2024-02-16 22:33:24 314浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《golang中为什么无法将JSON字段值转换为字节?》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我正在尝试解析 json 对象,获取特定字段 session_id 作为 []byte

func login() {
    var jsonobj map[string]interface{}
    json.unmarshal(body, &jsonobj)
    content := jsonobj["content"].(map[string]interface{})
    sid := content["session_id"].([]byte)
}

其中,body 是来自 http 响应的 json 对象。它看起来像这样:

{
    "seq": 0,
    "status": 0,
    "content": {
        "session_id": "abcd1234efgh5678",
        "config": {
            "icons_dir": "feed-icons",
            "icons_url": "feed-icons",
            "daemon_is_running": true,
            "custom_sort_types": [],
            "num_feeds": 2
        },
        "api_level": 18
    }
}

我的代码在最后一行出现恐慌,说:panic:接口转换:接口 {} 是字符串,而不是 []uint8

如果我将最后一行更改为下面的内容,那么它就可以工作:

    sid := content["session_id"].(string)
    sidbytes := []byte(sid)

我假设在错误消息中“interface {} is string”指的是“abcd1234efgh5678”是一个字符串,而uint8是字节(这是有道理的,但是)?我在这里误解了什么?


正确答案


您可以使用 session_id 作为 []byte 因为它不是一个数组字节,如果您注意它的名称,您会发现它是一个字节切片,但您的 JSON 是一个字符串。所以你不能将它作为 []byte 来获取。

你应该做什么

您所做的就是您问题的正确方法和正确答案。

如果你自己生成Json,你可以将session_id设置为一个字节切片,这样在解组时你可以得到它作为[]byte

以上就是《golang中为什么无法将JSON字段值转换为字节?》的详细内容,更多关于的资料请关注golang学习网公众号!

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