使用GO返回结构数组作为Json Response

时间:2014-11-18 22:00:17

标签: json struct go

我正在GO中构建REST api,并且我能够从服务器获取JSON响应。我期待将JSON响应存储在一个容器(数组)中,并从该函数返回该结构。我的数据结构定义如下 - {

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
}

}

迭代p给我我的JSON结构,我想将它附加到Data []容器,该容器可以保存此返回的JSON响应并从函数返回。我试过玩它但得到一些例外。有人可以帮我这个吗?

谢谢,我通过做这样的事情让我的代码工作 {

var result ListContainersResponse
    var temp Container
    temp.container = append(temp.container, p)
    result.Data = append(result.Data, temp)

}

1 个答案:

答案 0 :(得分:0)

假设您已经将JSON解码为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
}

此外,如果其他任何人感兴趣,这里是我如何将JSON纳入结构:

var p Payload
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&p)

r的类型为http.Request。 我希望json字符串看起来像:

{
    "data": [...]
}