Некорректный парсинг экранированного обратного слеша в JSON
Почему не работает парсинг 4n + 2 обратных слешей? Иначе говоря, как экранировать нечётное количество слешей?
// JavaScript
JSON.parse('{"content": "\\"}')
# Python 3
import json
print(json.loads('{"content": "\\"}'))
Онлайн-парсеры обрабатывают нормально (правда, некоторые обрабатывают не совсем так, как ожидается, выводя в результат удвоенное количество слешей).
Ответы (1 шт):
Автор решения: OPTIMUS PRIME
→ Ссылка
Вообще-то JS тоже говорит SyntaxError: Unexpected end of JSON input
Потому что \ экранирует второй \ и в функцию попадает строка '{"content": "\"}', где оно воспринимается как попытка экранировать кавычку.
Используйте 4 слеша, или 'row string'
import json
obj = json.loads('{"content": "\\\\"}')
print( obj ) # {'content': '\\'}
print( len( obj['content'] ) ) # 1 (это один экранированный слэш, а не два символа)
print( json.loads(r'{"content": "\\"}') )
