簡體   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