Странные символы в строковом буфере в JavaScript - PullRequest
0 голосов
/ 22 марта 2019

У меня есть особый контекст, в котором одни данные сильно преобразуются для передачи по сети.В конце, когда я пытаюсь вернуть эти данные, в начале строки появляются нежелательные символы.

Сначала я получаю данные из БД, и они возвращаются мне в байтах (<Array.<byte>>), полностью читается с .toString().Результат:

{\"company\":\"xxx\",\"email\":\"xxx\",\"firstName\":\"xxx\",\"lastName\":\"xxx\",\"providerId\":\"xxx\",\"role\":\"xxx\",\"status\":\"xxx\"}

Эти данные передаются в другую «среду» с функцией (не разработанной мной и которую я не могу изменить), которая возвращает данные в виде «Я действительно не знаю, чтоформат это ".

Я могу расшифровать его следующим фрагментом кода:

jsonIdentity = JSON.stringify(bufferIdentity);
Buffer.from(JSON.parse(jsonIdentity).payload.buffer.data).toString('utf-8')

Однако в начале строки у меня есть следующее:

"\u0008\u0006\u001a�\u0001\u0008�\u0001\u001a{{\"company\":\"xxx\",\"email\":\"xxx\",\"firstName\":\"xxx\",\"lastName\":\"xxx\",\"providerId\":\"xxx\",\"role\":\"xxx\",\"status\":\"xxx\"}

Такжеотображается в моих журналах следующим образом:

��{{"company":"xxx","email":"xxx","firstName":"xxx","lastName":"xxx","providerId":"xxx","role":"xxx","status":"xxx"

Как я могу удалить его / не допустить, чтобы он попал в мой результат?Это мешает мне использовать JSON.

Обновление: вот буфер, который я получаю:

{"status":200,"message":"","payload":{"buffer":{"type":"Buffer","data":[8,6,26,128,1,8,200,1,26,123,123,34,99,111,109,112,97,110,121,34,58,34,105,98,109,34,44,34,101,109,97,105,108,34,58,34,102,64,105,98,109,46,99,111,109,34,44,34,102,105,114,115,116,78,97,109,101,34,58,34,102,108,111,114,105,97,110,34,44,34,108,97,115,116,78,97,109,101,34,58,34,99,97,115,116,34,44,34,112,114,111,118,105,100,101,114,73,100,34,58,34,102,99,34,44,34,114,111,108,101,34,58,34,117,115,101,114,34,44,34,115,116,97,116,117,115,34,58,34,111,107,34,125,34,64,98,54,57,51,50,51,53,100,49,52,97,49,98,102,57,57,56,100,50,99,97,102,53,53,52,52,100,97,49,50,50,51,55,101,97,55,99,50,56,55,50,49,56,97,101,55,51,100,55,97,50,53,101,52,55,48,48,51,56,52,100,54,53,54,58,14,100,101,102,97,117,108,116,99,104,97,110,110,101,108]},"offset":10,"markedOffset":-1,"limit":133,"littleEndian":true,"noAssert":false}}

Ответы [ 2 ]

0 голосов
/ 14 мая 2019
0 голосов
/ 25 марта 2019

Можете ли вы попробовать это:

const yourString = JSON.parse(jsonIdentity).payload.buffer.data;
console.log(Buffer.from(yourString, 'base64').toString('utf-8'))

Уродливое решение - просто обрезать или заменить символы из вашего результата

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...