Nodejs не может распознать json полученный из html

Последнее время использую nodejs в своих задумках, и тут столкнулся с проблемой парсинга Json.



В коде html внутри тэга <script> есть закодированный JSON, который распознается функцией parse().
<script>
 var variable = JSON.parse('\x7B\x22id\x22\x3A.......');
</script>
Я его спарсил регулярным выражением const regex = new RegExp(`variable.+JSON\\.parse\\(\\'([^\\']+)\\'\\)\\;`);Но когда я уже пытался распознать полученное функцией JSON.parse я получал ошибку SyntaxError: Unexpected token \ in JSON at position 0, но самое главное если просто в коде вставить полученную строку она парсилась замечательно.
const variable = '\x7B\x22id\x22\x3A.......';
JSON.parse(variable);
Не знаю почему так происходит, видимо не может как то изменить кодировку на лету…

В общем на помощь мне пришла такая самописная функция, для простоты использование расширим прототип String.
String.prototype.decodeEscapeSequence = function() {
  return this.replace(/\\x([0-9A-Fa-f]{2})/g, function() {
    return String.fromCharCode(parseInt(arguments[1], 16));
  });
};
И теперь используем
String.prototype.decodeEscapeSequence = function() {
  return this.replace(/\\x([0-9A-Fa-f]{2})/g, function() {
    return String.fromCharCode(parseInt(arguments[1], 16));
  });
};

 const html = getHtmlPage();
 const regex = new RegExp(`variable.+JSON\\.parse\\(\\'([^\\']+)\\'\\)\\;`);
 const match = html.match(regex);
 if (match.length === 2) {
	const json = match[1].decodeEscapeSequence();
	const result = JSON.parse(json);
}
В result должен быть объект полученный из json который мы спарсили с сайта.

Комментарии ()

    Авторизация

    GitHubGoogleVkontakteYandex
    Есть вопрос или предложение пиши в Telegram @cloudsv

    MTProto прokси для Telegram

    Прямой эфир

    cloudsv 26 октября 2024, 11:31
    MySQL Workbench падает при подключении 4
    Diego mont 25 мая 2023, 07:04
    Полезные боты в Telegram 2
    cloudsv 24 апреля 2023, 17:56
    Обновление Scala Rider G4 52
    cloudsv 12 ноября 2022, 19:16
    Установка и настройка minidlna 3
    cloudsv 03 ноября 2022, 03:42
    Настройка прокси mtproto для Telegram 52
    cloudsv 03 января 2022, 10:50
    Let's Encrypt это легко и просто 4
    cloudsv 05 августа 2020, 11:57
    Мне вчера стукнуло 34 4
    cloudsv 07 августа 2023, 22:56
    Linux Asus ROG x13 flow 2022 GV301RE и Linux 0
    cloudsv 15 апреля 2023, 16:23
    Linux Уведомление о смены workspace в X11 Linux 0
    cloudsv 17 октября 2020, 09:55
    Linux Отключить DHCP IPv6 в systemd 0
    cloudsv 30 июля 2020, 21:54
    О жизни Мне вчера стукнуло 34 4
    cloudsv 15 апреля 2020, 15:45
    Linux Основные hotkeys редактора Vim 0
    cloudsv 01 октября 2019, 08:00
    Linux Локальный редирект порта в Linux 0
    cloudsv 25 августа 2019, 16:14
    О жизни Социальная сеть от Яндекса Aura 0
    cloudsv 30 июля 2019, 21:34
    О жизни 33 year old 0
    cloudsv 25 июня 2019, 18:29
    Telegram Полезные боты в Telegram 2