繁体   English   中英

golang 解组未知 json 数据

[英]golang unmarshall unknown json data

我有一个用例,我需要从 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)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM