Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在golang中映射或生成变量json响应的结构?_Json_Api_Go_Struct - Fatal编程技术网

如何在golang中映射或生成变量json响应的结构?

如何在golang中映射或生成变量json响应的结构?,json,api,go,struct,Json,Api,Go,Struct,我正在调用一个API并获取json,但不知道如何为响应生成一个结构,我已经使用json来获取响应的结构。但问题是,每次的反应都不一样。 例如,我有一个使用JSON的结构:- type Autogenerated struct { Response struct { Results struct { Status string `json:"status"` StatusCode int

我正在调用一个API并获取json,但不知道如何为响应生成一个结构,我已经使用json来获取响应的结构。但问题是,每次的反应都不一样。 例如,我有一个使用JSON的结构:-

type Autogenerated struct {
    Response struct {
        Results struct {
            Status      string `json:"status"`
            StatusCode  int    `json:"status_code"`
            ResultsData struct {
                ResultsCount       int `json:"results_count"`
                NearbyCount int `json:"nearby_count"`
            } `json:"results_data"`
            SortData struct {
                SortBy string `json:"sort_by"`
            } `json:"sort_data"`
            ResponseData struct {
                Data0 struct {
                    Name string `json:"name"`
                } `json:"data_0"`
                Data1 struct {
                    Name string `json:"name"`
                } `json:"data_1"`
            } `json:"response_data"`
            Time float64 `json:"time"`
        } `json:"results"`
    } `json:"response"`
}
数据1和数据0可以更像数据2、数据3….,我希望名称位于数据0、数据1….的内部。。。。
我对golang很陌生,也许我们可以用Map来做,但由于一直不一样,我不知道怎么做。此外,还有许多与名称一起的字段,我没有将它们粘贴在这里以保持问题的清晰。

使用
map[string]interface{}
作为响应数据类型。Data0到任意数量的os Data0类型字段解组映射为键
data\u 0、data\u 1、data\u 2

ResponseData map[string]interface{} `json:"response_data"`
如果您的数据作为同一对象出现在每个数据\u 0中。。。数据,然后定义如下所示的结构类型,并使用该类型定义映射

//new data type
type Data struct {
    Name string  `json:"name"`
}

//add this to your Autogenerated struct 
ResponseData map[string]Data `json:"response_data"`
或者简单地加上

ResponseData map[string]struct{
    Name string `json:"name"`
} `json:"response_data"`

对那个部分使用映射。你的意思是说我可以在ResponseData之前保持结构不变,并且在其中我可以使用映射吗?举个小例子会很有帮助。是的,您应该将
ResponseData结构{…}
替换为
ResponseData映射[string]接口{}
。或者可能是
map[string]结构{…}