JSON-декодирование с использованием Go завершается неудачно - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть некоторые проблемы с расшифровкой тела ответа http.Ответ, который я получаю от использования Insomnia, выглядит следующим образом:

[
  {
    "name": "monitoring",
    "instances": [
      {
        "host": "ite00716.local",
        "id": "2058b934-720f-47c5-a1da-3d1535423b83",
        "port": 8080
      }
    ]
  },
  {
    "name": "app1",
    "instances": [
      {
        "host": "172.20.10.2",
        "id": "bc9a5859-8dda-418a-a323-11f67fbe1a71",
        "port": 8081
      }
    ]
  }
]

Когда я использую следующий код go, структура, которую я декодирую, пуста.Я не уверен почему.Пожалуйста, помогите мне!

type Service struct {
    Name      string     `json:"name"`
    Instances []Instance `json:"instances"`
}

type Instance struct {
    Host string `json:"host"`
    Id   string `json:"id"`
    Port int    `json:"port"`
}

func main() {
    resp, err := http.Get("http://localhost:8080/services")
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var s Service

    json.NewDecoder(resp.Body).Decode(&s)

    fmt.Println(s)
}

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Проблема может заключаться в том, что ваша переменная является службой, а ваш json представляет массив «служб».

Попробуйте объявить s как:

var s []Service;
0 голосов
/ 18 декабря 2018

Ваш ответ JSON является массивом услуг

var s []Service
...