как фильтровать управляющий символ в javascript

#javascript #json #parsing

#javascript #json #синтаксический анализ

Вопрос:

Нравится

 JSON.parse('{"text": "~#"}');
 

выдаст ошибку synatax, потому что между ~ и # есть 0x0B . вы этого не видите, но оно существует.

Как этого избежать?

Комментарии:

1. Кодируйте эти символы в соответствии со спецификацией JSON.

2. @alex Я не могу контролировать ответ сервера

Ответ №1:

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

 var data = JSON.parse('{"text":   "~#"}'.replace(/([^dw"':,{}~#]|s) /g, ' '));
 

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

Комментарии:

1. Отредактировано, чтобы выражение допускало пробелы. Однако это добавит, возможно, нежелательное пространство.