猿问

将 JSON 解析为嵌套结构

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 中,它们会出现,但当它们是子结构时不会出现。


明月笑刀无情
浏览 123回答 1
1回答

慕婉清6462132

将您的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"`}这样它将按照在该结构中定义的方式工作。您可以通过两种方式访问其字段:直接地: APIResponse.Count间接: APIResponse.Paging.Count
随时随地看视频慕课网APP

相关分类

Go
我要回答