- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我完全是个菜鸟,我想了解我在这里缺少什么。我期望使用 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/
我正在尝试创建一个 API 端点来将内容保存到数据库中,但是,我通过 POST 请求传递的整数似乎没有正确解析 这是我的结构: type OnlineTestForm struct { Form
我正在尝试对 HTTP 请求进行 base64 解码,然后使用 JSON 解码器对其进行解码。 我尝试了两种实现base64解码器的方法: func decode(encoded []byte) ([
这段代码的要点在 Go 中似乎很常见: if err := json.NewDecoder(r.Body).Decode(&mr); err != nil { return mr, err }
我有一个设置了上下文截止日期的 Golang 程序。我正在发送 HTTP 请求,并希望在阅读正文时看到超出截止日期的错误。 似乎当我使用 ioutil.ReadAll 读取响应主体时,读取方法将被中断
我有一个设置了上下文截止日期的 Golang 程序。我正在发送 HTTP 请求,并希望在阅读正文时看到超出截止日期的错误。 似乎当我使用 ioutil.ReadAll 读取响应主体时,读取方法将被中断
我正在尝试从 html 响应中解码 XML。 =>我将这个响应主体作为字符串保存到一个变量中,并使用 xml.Unmarshal 函数成功解码。代码: err = xml.Unmarshal(
我正在尝试找出一种在JSON解码http.Response.Body时获取错误原因的方法 if err := json.NewDecoder(resp.Body).Decode(&lResp); er
我完全是个菜鸟,我想了解我在这里缺少什么。我期望使用 dec.Decode 循环遍历 json 值并以响应映射结束。我得到的是整个 json 字符串作为 map 第一个元素的键。我错过了什么? 示例响
我正在尝试通过在 Go 中使用 gorilla mux 库构建不同的基本 REST API 来学习后端开发(遵循 tutorial) 这是我到目前为止构建的代码: package main impor
我正在使用 the answer here从 api 获取一些 json: package main import ( "encoding/json" "fmt" "log"
这是我的结构: type Media struct { MediaID string `json:"media_id"` MediaType float64 `json:"m
我正在开发一个 API 客户端,我需要根据请求对 JSON 有效负载进行编码并从响应中解码 JSON 正文。 我已经阅读了几个库的源代码,根据我所见,我基本上有两种可能对 JSON 字符串
I'm currently learning Go and have built a small API in which I search for and summarize data fro
我按照本网站上的示例编写了一些代码来解析大型 XML 文件 (>3GB):https://blog.singleton.io/posts/2012-06-19-parsing-huge-xml-fil
来自 PHP,我是这里的 Golang 新手。我读到一个与我的问题非常相似的问题,但我的实现略有偏差。每当我使用以下代码进行解码时,变量 msg.Username 始终为空。 Golang 不会在这里
我是一名优秀的程序员,十分优秀!