group, ok := groups[s.Category]
if !ok {
group = make(map[string]interface{})
groups[s.Category] = group
}
group["servers"] = append(group["servers"], map[string]string{
"internalName": s.InternalName,
"displayName": s.DisplayName,
})
}
// Wrap our result.
result := map[string]interface{}{
"groups": groups,
}
If you just want to generate the JSON, and save some memory, use struct literal for know data structures instead of map:
type Server struct {
InternalName string `json:"internalName"`
DisplayName string `json:"displayName"`
}
type Group struct {
Servers []Server `json:"servers"`
}
groups := make(map[string]*Group, 0)
group, _ := groups[s.Category]
if !ok {
group = &Group{}
groups[s.Category] = group
}
group.Servers = append(group.Servers, Server{
s.InternalName, s.DisplayName,
})
}
// Wrap our result.
result := map[string]interface{}{
"groups": groups,
}
David