driversti
@driversti
Кратко о себе

Как получить JSON из массива байт?

Суть задачи: отобразить на фронте курсы валют ЦентрБанка РФ
Ответ приходит сжатым (gzip). Я получаю массив байт, в цикле конвертирую в строку и отправляю на фронт, ещё и с проблемами кодировки кириллицы.

4c7abb42989842d8acb8f8c35433ccac.png

Это всё, чего я пока добился. Как мне из этого получить JSON, чтобы я мог продолжить с ним работу на фронте используя React.js?
  • Вопрос задан
  • 851 просмотр
Решения вопроса 1
@Aves
const {get} = require('http');
const {Iconv} = require('iconv');
const {parseString} = require('xml2js');
const {inspect} = require('util');

get('http://www.cbr.ru/scripts/XML_daily.asp', res => {
  const data = [];
  res
    .pipe(new Iconv('cp1251', 'utf8'))
    .on('data', chunk => data.push(chunk))
    .on('end', () =>
      parseString(
        Buffer.concat(data),
        (err, res) => console.log(inspect(res, {depth: null}))
      )
    );
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А зачем вам массив байтов?
Для начала, если хотите, чтобы вам возвращался не gzip, правильно передавайте в запросе заголовок 'Accept-Encoding' или вообще его не передавайте.
Затем, вам приходит XML, кодировка его указана в первой строке (Windows-1251). Соответственно можете перекодировать в любую нужную вам кодировку.
Остаётся только распарсить XML и сгенерировать JSON в том формате, который вам нужен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы