Итак, ваша структура будет выглядеть следующим образом:
type Obj struct {
Targets []string `json:"targets"`
Labels map[string]string `json:"labels"`
}
Заполните его:
obj := []Obj{
Obj{
Targets: []string{"10.11.150.1:7870", "10.11.150.4:7870"},
Labels: map[string]string{
"job": "mysql",
},
},
Obj{
Targets: []string{"10.11.122.11:6001", "10.11.122.15:6002"},
Labels: map[string]string{
"job": "postgres",
},
},
}
Выделите его в строку:
jsonBytes, err := json.Marshal(obj)
if err != nil {
log.Fatal("error marshaling struct to JSON:", err)
}
Напишите его вфайл:
if err := ioutil.WriteFile("output.json", jsonBytes, 0644); err != nil {
log.Fatal("error writing file:", err)
}
Здесь все вместе:
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
)
type obj struct {
Targets []string `json:"targets"`
Labels map[string]string `json:"labels"`
}
func main() {
obj := []obj{
obj{
Targets: []string{"10.11.150.1:7870", "10.11.150.4:7870"},
Labels: map[string]string{
"job": "mysql",
},
},
obj{
Targets: []string{"10.11.122.11:6001", "10.11.122.15:6002"},
Labels: map[string]string{
"job": "postgres",
},
},
}
jsonBytes, err := json.Marshal(obj)
if err != nil {
log.Fatal("error marshaling struct to JSON:", err)
}
if err := ioutil.WriteFile("output.json", jsonBytes, 0644); err != nil {
log.Fatal("error writing file:", err)
}
fmt.Printf("%+v\n", jsonBytes)
}