Декодирование 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
?