Как сделать карту похожей на "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. Вы не можете помещать данные «ключ-значение» внутрь [], кроме {}. Поэтому что-то внутри [] должно быть списком. Так что вы можете изменить его как "Data":[{"3":{...}},{"4":{...}}].
Затем измените код контроллера, например users := make([]map[int]interface{},0)
@М.Билгүүн изменить назначение пользователей на users = append(users, map[int]interface{}{k: j,})
Я думаю, вы должны создать новые типы:
type AutoGenerated struct {
DefaultProjectID string `json:"default_project_id"`
Description string `json:"description"`
DomainID string `json:"domain_id"`
Enabled bool `json:"enabled"`
}
введите карту MyType [int] AutoGenerated
Я думаю, что не стоит создавать срез карты, но можно:
type SliceMap []MyType
Чтобы сгенерировать новые go-типы из JSON, вы можете использовать: https://mholt.github.io/json-to-go/
cannot use j (type users.User) as type []map[int]interface {} in assignment