如何制作[]数组并使用包含[]数组进行映射

时间:2019-04-12 04:24:10

标签: json api go controller beego

如何制作像"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   用户映射[int]界面{}

当我得到答案时,我必须添加更多详细信息。

2 个答案:

答案 0 :(得分:1)

首先,"Data":[ "3":{...},"4":{...} ]不是json的有效格式。您不能将键值数据放入[]内,但{}除外。因此[]内的某些内容必须是清单。因此您可以像"Data":[{"3":{...}},{"4":{...}}]一样更改它。
然后更改控制器代码,例如users := make([]map[int]interface{},0)

答案 1 :(得分:1)

我认为您应该创建新的类型:

myTree->header()->setFrameShape(QFrame::NoFrame);
myTree->header()->setFrameShadow(QFrame::Plain);

}

类型为MyType的地图[int]已自动生成

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

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

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