Декодирование JSON на Голанге с использованием json.Unmarshal vs json.NewDecoder.Decode

Я разрабатываю клиент API, в котором мне нужно кодировать полезную нагрузку JSON по запросу и декодировать тело JSON из ответа.

Я прочитал исходный код из нескольких библиотек и из того, что я видел, у меня есть две возможности для кодирования и декодирования строки JSON.

использованиеjson.Unmarshal передавая всю строку ответа

data, err := ioutil.ReadAll(resp.Body)
if err == nil && data != nil {
    err = json.Unmarshal(data, value)
}

или используяjson.NewDecoder.Decode

err = json.NewDecoder(resp.Body).Decode(value)

В моем случае при работе с HTTP-ответами, которые реализуютio.ReaderВторая версия, кажется, требует меньше кода, но, поскольку я видел оба варианта, я задаюсь вопросом, есть ли предпочтение, использовать ли мне решение, а не другое.

Кроме того,принятый ответ на этот вопрос говорит

Пожалуйста, используйтеjson.Decoder вместоjson.Unmarshal.

но это не упомянуло причину. Должен ли я действительно избегать использованияjson.Unmarshal?

Ответы на вопрос(2)

Ваш ответ на вопрос