go 不写结构体 动态解析 json,类似于 python 解析 json 为 dict格式

遇到一个问题,需要用 go 请求 api,再返给前端,写结构体有些麻烦,前端可以解析 json

在 Go 语言中,没有像 Python 中的字典(dict)那样的动态类型来自动解析 JSON 数据。Go 是一种静态类型语言,因此需要提前定义一个结构体或映射来表示 JSON 数据的结构。

虽然没有像 Python 那样的动态解析,但你可以使用 map[string]interface{} 来部分模拟这种功能。这种方法允许你将 JSON 数据解析为一个映射(类似于 Python 中的字典),其中键是字符串,值可以是任何类型。

package main

import (
	"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 响应为 map
    var data map[string]interface{}
    if err := json.Unmarshal(resp.Body(), &data); err != nil {
        return nil, err
    }

    // 返回解析后的 map
    return data, nil
}

func main() {
    // 调用自定义函数并处理结果
    url := "https://jsonplaceholder.typicode.com/posts/1"  // 替换为你的实际 URL
    responseData, err := getResponseAsMap(url)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    // 打印解析后的 map 数据
    fmt.Printf("%+v\n", responseData)
}

你可能感兴趣的:(golang,json,python)