Go 实现对返回的map进行分页

作者: 太阳上的雨天 分类: Go 发布时间: 2022-11-16 10:55

根据业务场景需要,API接口可能需要对一个map类型的数据进行json序列化返回给前端,当map中的key过多时,也是需要分页的。如何实现?

Deomo代码:

var data []map[string]string

type Res struct {
    Total int `json:"total"`
    List  []map[string]string
}

func DemoData(param *params.DemoData) (*Res, error) {
    res := make(map[string]string)
    res["a"] = "a"
    res["b"] = "b"
    res["c"] = "c"
    res["d"] = "d"
    res["f"] = "f"

    for i, v := range res {
        m := make(map[string]string)
        m[i] = v
        data = append(data, m)
    }

    r := getDemoDataPage(param.Page, param.PageSize)

    rr := &Res{}
    rr.Total = len(r)
    rr.List = r
    return rr, nil
}

func getDemoDataPage(page int, pageSize int) []map[string]string {
    start := (page - 1) * pageSize
    stop := start + pageSize

    if start > len(data) {
        return nil
    }

    if stop > len(data) {
        stop = len(data)
    }

    return data[start:stop]
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注