Я получил решение.
Мы можем использовать массив интерфейсов.
var jsonArr []interface{}
и добавить к нему.
var obj map[string]interface{}
err := json.Unmarshal([]byte("{}"), &obj)
if err != nil {
fmt.Println(err)
return
}
obj["key1"] = "val1"
obj["key2"] = "val2"
jsonArr = append(jsonArr, obj) // obj is the jsonObject
Маршал это
jsonArrVal, _ := json.Marshal(jsonArr)
fmt.Println(string(jsonArrVal))