gpt4 book ai didi

json - 使用 Golang json.NewDecoder/json.NewEncoder

转载 作者:IT王子 更新时间:2023-10-29 02:05:28 25 4
gpt4 key购买 nike

我完全是个菜鸟,我想了解我在这里缺少什么。我期望使用 dec.Decode 循环遍历 json 值并以响应映射结束。我得到的是整个 json 字符串作为 map 第一个元素的键。我错过了什么?

示例响应:

2015/03/02 10:03:16 map[error:invalid_request error_description:that is not a recognized WePay API call error_code:1001] map[string]interface {}

package main

import (
"encoding/json"
"io"
"log"
"net/http"
"reflect"
)

func main() {
var v map[string]interface{}
resp, err := http.Get("https://wepayapi.com/v2/")
if err != nil {
log.Println("Error: " + err.Error())
}
defer resp.Body.Close()

// resp.Body is an io.ReadCloser... NewDecoder expects an io.Reader
dec := json.NewDecoder(resp.Body)

// Decode reads the next JSON-encoded value from its input and stores it in the value pointed to by v.
for err := dec.Decode(&v); err != nil && err != io.EOF; {
log.Println("ERROR: " + err.Error())
return
}
log.Println(v, reflect.TypeOf(v))
}

最佳答案

Decoder 将立即解码整个 JSON 值(在本例中为错误对象),您不必在循环中调用它:

if err := dec.Decode(&v); err != nil {
log.Println("ERROR: " + err.Error())
return
}

作为响应,您会得到一个等效于此 JSON 的 map :

{"error":"invalid_request","error_description":"that is not a recognized WePay API call","error_code":1001}

结果:

map[string]interface{} {
"error":"invalid_request",
"error_description":"that is not a recognized WePay API call",
"error_code":1001,
}

关于json - 使用 Golang json.NewDecoder/json.NewEncoder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28814366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com