登录
首页 >  Golang >  Go问答

解析未知结构的 JSON 数据在 Golang 中

来源:stackoverflow

时间:2024-02-26 16:57:28 103浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《解析未知结构的 JSON 数据在 Golang 中》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我有一个用例,我需要解组来自 http 请求的响应。我事先不知道响应格式,但只想将结果上游返回到 web 客户端(与代理类似的功能) 通常我会像下面这样解组:

resp, _ = http.post(url, "application/json", bytes.newbuffer(jsonpayload))
body, _ := ioutil.readall(resp.body)
responsejson := make(map[string]interface{})
json.unmarshal(body, &responsejson)

但是,如果结果是 json [{},{}...] 数组 那么我需要执行以下操作

var responseList []map[string]interface{}
json.Unmarshal([]byte(body), &responseList)

如果结果是像 "ok" 这样的单个字符串值,它还需要不同的解组方法

但是如果我事先不知道响应类型,我怎么知道如何解组?


正确答案


您可以将其解组为接口,如下所示:

var responsejson interface{}
json.unmarshal(body, &responsejson)

读取响应类型:

switch resp := responseBody.(type) {
case string:
    fmt.Println(resp)
case float64:
    fmt.Println(int(resp))
default:
    fmt.Println(resp)
}

好了,本文到此结束,带大家了解了《解析未知结构的 JSON 数据在 Golang 中》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

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