Как сделать массив [] и карту с массивом contains [] - PullRequest
0 голосов
/ 12 апреля 2019

Как сделать карту типа "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
    }
}

please help me with this error

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

Мне просто нужно добавить больше деталей, когда я получу ответ.

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Я думаю, вы должны создать новые типы:

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

}

тип MyType map [int] AutoGenerated

Я думаю, что создавать фрагмент карты не очень хорошая идея, но может:

type SliceMap []MyType

Для генерации новых типов go из JSON вы можете использовать: https://mholt.github.io/json-to-go/

1 голос
/ 12 апреля 2019

Во-первых, "Data":[ "3":{...},"4":{...} ] не является допустимым форматом json. Вы не можете поместить данные значения ключа в [], за исключением {}. Поэтому что-то внутри [] должно быть списком. Так что вы можете изменить его следующим образом "Data":[{"3":{...}},{"4":{...}}].
Затем измените код контроллера как users := make([]map[int]interface{},0)

...