遇到一个问题,需要用 go 请求 api,再返给前端,写结构体有些麻烦,前端可以解析 json
在 Go 语言中,没有像 Python 中的字典(dict)那样的动态类型来自动解析 JSON 数据。Go 是一种静态类型语言,因此需要提前定义一个结构体或映射来表示 JSON 数据的结构。
虽然没有像 Python 那样的动态解析,但你可以使用 map[string]interface{} 来部分模拟这种功能。这种方法允许你将 JSON 数据解析为一个映射(类似于 Python 中的字典),其中键是字符串,值可以是任何类型。
package mainimport ("encoding/json""fmt""github.com/go-resty/resty/v2"
)func getResponseAsMap(url string) (map[string]interface{}, error) {// 创建 Resty 客户端client := resty.New()// 发送 GET 请求resp, err := client.R().Get(url)// 处理响应if err != nil {return nil, err}// 解析 JSON 响应为 mapvar data map[string]interface{}if err := json.Unmarshal(resp.Body(), &data); err != nil {return nil, err}// 返回解析后的 mapreturn data, nil
}func main() {// 调用自定义函数并处理结果url := "https://jsonplaceholder.typicode.com/posts/1" // 替换为你的实际 URLresponseData, err := getResponseAsMap(url)if err != nil {fmt.Println("Error:", err)return}// 打印解析后的 map 数据fmt.Printf("%+v\n", responseData)
}