英文:
Returning an array of structure as Json Response using GO
问题
我正在使用GO构建一个REST API,并且能够从服务器获取JSON响应。我希望将JSON响应存储在某种容器(数组)中,并从函数中返回该结构。我定义了如下的数据结构:
type Payload struct {
Stuff []Data `json:"data"` // 保存返回的JSON响应
}
type Container struct {
container []Payload
}
type ListContainersResponse struct {
Data []Container // 希望从函数中返回这个结构
}
func (client *Client) ListContainers() (ListContainersResponse, error) {
// 获取JSON响应
var p Payload
// XYZ是需要返回的ListContainersResponse类型
return XYZ
}
遍历p可以得到JSON结构,我想将其附加到一个Data[]容器中,该容器可以保存返回的JSON响应并从函数中返回。我尝试过一些操作,但是遇到了一些异常。有人可以帮助我吗?
谢谢,我通过以下方式使我的代码工作起来了:
var result ListContainersResponse
var temp Container
temp.container = append(temp.container, p)
result.Data = append(result.Data, temp)
英文:
I am building a REST api in GO and I am able to fetch the JSON response from the server. I am looking forward to store the JSON response in sort of a container (array) and return that structure from the function. I have my data structures defined something like this -
{
type Payload struct {
Stuff []Data `json:"data"` // holds the JSON response returned
}
type Container struct {
container []Payload
}
type ListContainersResponse struct {
Data []Container // want this thing to be returned from the function
}
func (client *Client) ListContainers() (ListContainersResponse, error) {
// fetches the JSON response
var p Payload
// XYZ is something of the type ListContainersResponse which needs to be returned
return XYZ
}
}
iterating over p gives me my JSON structure and I want to append it to a Data[] container which can hold this returned JSON response and returned back from the function. I tried playing around with it but get some exceptions. Could someone help me with this?
Thanks, I got my code working by doing something like this
{
var result ListContainersResponse
var temp Container
temp.container = append(temp.container, p)
result.Data = append(result.Data, temp)
}
答案1
得分: 0
假设您已经将JSON解码为Payload p的实例。
func (client *Client) ListContainers() (ListContainersResponse, error) {
// 获取JSON响应
var p Payload
XYZ := ListContainersResponse {
Data: []Container {
container: []Payload {
{p},
},
},
}
// XYZ是ListContainersResponse类型的对象,需要返回
return XYZ
}
此外,如果有其他人感兴趣,以下是将JSON转换为结构体的方法:
var p Payload
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&p)
其中,r
的类型为http.Request
。
我期望JSON字符串的格式如下:
{
"data": [...]
}
英文:
Assuming you've already got the JSON decoded into an instance of Payload p.
func (client *Client) ListContainers() (ListContainersResponse, error) {
// fetches the JSON response
var p Payload
XYZ := ListContainersResponse {
Data: []Container {
container: []Payload {
{p},
},
},
}
// XYZ is something of the type ListContainersResponse which needs to be returned
return XYZ
}
Additionally, in case any else is interested, here is how I would get the JSON into the struct:
var p Payload
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&p)
Where r
is of type http.Request
.
I expect the json string looks something like:
{
"data": [...]
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论