我看到的所有方法都涉及构建 struct 和将数据解组到 struct 中.但是,如果我得到的JSON响应包含数百个字段,该怎么办呢?我不想仅仅为了能够获得我想要的数据而不得不创建100个字段 struct .从Java背景出发,有一些简单的方法可以简单地获取字符串形式的http响应,然后将JSON字符串传递到允许轻松遍历的JSON对象中.非常无痛.围棋里有这样的东西吗?

伪代码中的Java示例:

String json = httpResponse.getBody();
JsonObject object = new JsonObject(json); 
object.get("desiredKey");

推荐答案

Golang:从HTTP响应中获取JSON,而不使用 struct 作为帮助器

这是我们遇到的典型情况.这是在json.Unmarshal%的情况下实现的.

这是一个简单的json

{"textfield":"I'm a text.","num":1234,"list":[1,2,3]}

它被串行化以通过网络发送,并且在Golang端被解组.

package main

import (
    "fmt"
    "encoding/json"
)

func main() {
    // replace this by fetching actual response body
    responseBody := `{"textfield":"I'm a text.","num":1234,"list":[1,2,3]}`
    var data map[string]interface{}
    err := json.Unmarshal([]byte(responseBody), &data)
    if err != nil {
        panic(err)
    }
    fmt.Println(data["list"])
    fmt.Println(data["textfield"])
}

希望这能帮上忙.

Go相关问答推荐

golang-jWT签名无效

如何在Deliverq中高效地传达客户依赖关系?

仅呈现一个模板的GIN Web应用程序

Websocket服务器实现与x/net库trowing 403

Go源在Goland(IDEA)中以灰色显示.什么意思?我怎么才能让它恢复正常?

在GO中创建[]字符串类型的变量

如何用Golang解码这个嵌套的json?

死锁 - 所有 goroutine 都处于睡眠状态(即使使用等待组)

优化方式中所有可能组合的字符串相似度

如何在 Go 中将 int 转换为包含 complex128 的泛型类型?

一个Go module可以和之前的非module模块发布在同一个路径下吗?

替换字符串中的最后一个字符

使用 Go 解组 SOAP 消息

设置指向空接口的指针

Go:从 ssl 证书中获取 'subject/unstructeredName' 的值

在恒等函数中将类型 T 转换为类型 U

io.Pipe 使用困难

Golang API 的 HTTPS

如何使用 fyne 避免 GUI 应用程序中的循环依赖?

Go 1.18 泛型如何使用接口定义新的类型参数