делает структуру в go для представления json
type
Incident struct {
Type string `json:"type"`
Title string `json:"title"`
Service struct {
ID string `json:"id"`
Type string `json:"type"`
} `json:"service"`
Priority struct {
ID string `json:"id"`
Type string `json:"type"`
} `json:"priority"`
Urgency string `json:"urgency"`
IncidentKey string `json:"incident_key"`
Body struct {
Type string `json:"type"`
Details string `json:"details"`
} `json:"body"`
EscalationPolicy struct {
ID string `json:"id"`
Type string `json:"type"`
} `json:"escalation_policy"`
}
тогда сделайте что-то вроде
hostname,err:=os.Hostname()
if (err !=nil) {
panic(err)
}
incident:=Incident{ Type: "incident",
Title: fmt.Sprintf("Docker is down on %s", hostname),
//...etc etc add all other fields
req, err := http.NewRequest("POST", url, json.Marshal(incident))
Обходной путь для объявления структур внутри структур кажется немного неуклюжим (извините)
Service: struct {
ID string `json:"id"`
Type string `json:"type"`
}{
ID: "asdf",
Type: "ABC",
},
Этот другой ответ https://stackoverflow.com/a/53255390/1153938 показывает, как разделить структуры внутри структуры Incident, и является более чистым способом сделать это
Я оставлю этот ответ здесь, потому что может быть интересно, как его объявить таким образом
Если вы звоните только по номеру json.Unmarshal
, тогда этот способ будет вполне подходящим, но для объявления вещей в программе, которые вам нужно сделать, возможно, не самый лучший