Вы можете разупорядочить JSON массивов в Go фрагменты. Итак, демаршалируйте в значение типа []ServiceData
или []*ServiceData
:
var servicedata []*ServiceData
Рабочая демонстрация:
func main() {
var result []*ServiceData
if err := json.Unmarshal([]byte(src), &result); err != nil {
panic(err)
}
fmt.Printf("%+v", result[0])
}
const src = `[
{
"host_name" : "hostname",
"perf_data" : "",
"plugin_output" : "All good",
"state" : 0
}
]`
Какие выходы (попробуйте на Go Игровая площадка ):
&{HostName:hostname PerfData: PluginOutput:All good State:0}
Также обратите внимание, что вы можете демаршалировать "прямо из тела", нет необходимости сначала читать тело.
Используйте json.Decoder
для этого:
var servicedata []*ServiceData
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
// handle error
}
Это намного короче, легче для чтения и эффективнее.