[英]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.