为了账号安全,请及时绑定邮箱和手机立即绑定

将 JSON 解析为嵌套结构

将 JSON 解析为嵌套结构

Go
明月笑刀无情 2022-12-19 10:43:53
type APIResponse struct {    Results []Result    `json:"results,omitempty"`    Paging  Paging}type Result struct {    Id string `json:"id"`,    Name string `json:"name"`,}type Paging struct {    Count    int    `json:"count"`    Previous string `json:"previous"`    Next     string `json:"next"`}func  Get(ctx context.Context) APIResponse[T] {    results := APIResponse{}    rc, Err := r.doRequest(ctx, req)    if rc != nil {        defer rc.Close()    }    err = json.NewDecoder(rc).Decode(&results)    return results}示例 JSON 如下所示:{    "count": 70,    "next": "https://api?page=2",    "previous": null,    "results": [        {            "id": 588,            "name": "Tesco",            }...我希望它被解码为 APIResponse 形式的结构,其中分页元素是一个子结构,就像结果一样。但是,在示例 JSON 中,分页方面没有父 json 标记。它如何被解码成它自己的独立结构?目前,如果我将 Count、Next 和 Previous 提升到 APIResponse 中,它们会出现,但当它们是子结构时不会出现。
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

将您的Paging结构直接嵌入到APIResponse以下内容中:


type APIResponse struct {

    Results []Result    `json:"results,omitempty"`

    Paging

}

type Result struct {

    Id string `json:"id"`,

    Name string `json:"name"`,

}

type Paging struct {

    Count    int    `json:"count"`

    Previous string `json:"previous"`

    Next     string `json:"next"`

}

这样它将按照在该结构中定义的方式工作。您可以通过两种方式访问其字段:

  1. 直接地: APIResponse.Count

  2. 间接: APIResponse.Paging.Count


查看完整回答
反对 回复 2022-12-19
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信