如何制作包含 [] 数组的 [] 数组和映射

How to make a []array & map with contains []array

如何制作像"Data":[{"3":{...}},{"4":{...}}]

这样的地图

控制器

jsons := make(map[string]interface{})
listUsers := identity.ListUsers()
users := make(map[int]interface{})

for k, j := range listUsers {
        if j.Description != "" {
            users[k] = j
    }
}

jsons["Data"] = users
u.Data["json"] = jsons
u.ServeJSON()

JSON

 "Data": {
    "3": {
        "default_project_id": "",
        "description": "description",
        "domain_id": "default",
        "enabled": true
    },
    "5": {
        "default_project_id": "9e266e1a750e45f8862e83341a5d0970",
        "description": "description",
        "domain_id": "default",
        "enabled": true
    }
}

listUsers []users.User users map[int]interface{}

我只是想在得到答案后添加更多详细信息。

首先,"Data":[ "3":{...},"4":{...} ] 不是 json.You 的有效格式,不能将键值数据放入 [] 中,{} 除外。所以 [=11 里面的东西=] 必须是 list.So 你可以像 "Data":[{"3":{...}},{"4":{...}}] 一样改变它。
然后更改控制器代码,如 users := make([]map[int]interface{},0)

我认为你应该创建新类型:

type AutoGenerated struct {
DefaultProjectID string `json:"default_project_id"`
Description      string `json:"description"`
DomainID         string `json:"domain_id"`
Enabled          bool   `json:"enabled"`

}

键入 MyType 映射[int]自动生成

我认为创建地图切片不是一个好主意,但可以:

type SliceMap []MyType

要从 JSON 生成新的 go-types,您可以使用:https://mholt.github.io/json-to-go/