根据业务场景需要,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]
}
正文完