我正在使用映射类型变量从API序列化我的JSON POST响应,并在Go中使用它。
使用字符串作为键和 []*json。原始消息数组作为映射中值的类型。
“act”和“key”是填充 http 的函数参数。后窗体。这是一个从 main() 调用的独立函数
以下是相关代码:
resp, err := http.PostForm(api, url.Values{"API": {key}, "action": {act}})
if err != nil {
fmt.Printf("AN ERROR OCCURED!")
log.Fatal(err)
}
defer func(Body io.ReadCloser) {
err := Body.Close()
if err != nil {
log.Fatal(err)
}
}(resp.Body)
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
var objmap map[string][]*json.RawMessage
err = json.Unmarshal(body, &objmap)
if err != nil {
log.Fatal(err)
}
fmt.Println(objmap)
以下是我在zsh终端中收到的输出:
地图[成功:[0xc00000e060 0xc00000e078 0xc00000e090]]
Unmarshal显然能够将关键“成功”与数组值的内存地址表示形式进行映射,但数组值本身(即嵌套对象的数组)未显示。
指针变量本身的 Unmarshal 似乎没有任何错误。API 返回单个 JSON 对象,其中包含一个键“success”,一个数组作为具有嵌套对象的值。我的目标是映射每个嵌套值并能够解析它。
是否需要完成另一个步骤才能访问数组中嵌套的值?如何将这些内存地址转换为它们所表示的实际值。JSON Unmarshal 是否不支持 JSON 数组的映射,只支持对象?
心有法竹
相关分类