type myData struct {
A string `json:"a_str"`
B string `json:"b_str"`
C string `json:"c_str"`
}
myMap := make(map[string][]myData)
data1 := myData{A: "hello", B: "gopher"}
data2 := myData{}
data3 := myData{A: "hey", B: "here", C: "golang"}
myMap["1"] = []myData{data1, data2, data3}
myMap["2"] = []myData{data2, data3}
myMap["3"] = []myData{data2}
buf := new(bytes.Buffer)
myMapInterface := make(map[string]interface{})
for k, v := range myMap {
myMapInterface[k] = interface{}(v)
}
err := json.NewEncoder(buf).Encode(myMapInterface)
if err != nil {
log.Fatal(err)
}
fmt.Println(buf.String())
// Is there anyway that I can exclude to encode empty elements in the struct?
// e.g. {"a_str":"","b_str":"A","c_str":""} -> {"b_str":"A"}