Ошибка, вероятно, вызвана escape-последовательностью \x3c
, появляющейся в одном из строковых литералов. Это допустимая escape-последовательность в JavaScript (она представляет символ <
), но в JSON она недопустима. JSON поддерживает экранирование Unicode, хотя: \u003c
.
Очевидно, вы получили свой ввод от какого-то сериализатора JavaScript. Конечно, лучшим решением было бы заменить его на правильный JSON сериализатор. Если это невозможно или нецелесообразно (например, потому что это исходит от третьей стороны), тогда вы можете использовать sed
для замены каждого \xnn
его аналогом Unicode \u00nn
.
sed 's/\\x\([0-9A-Fa-f]\{2\}\)/\\u00\1/g' poorjson.txt
Выход:
["*","*Cases","*/opt/selenium/tests/src/test/cases","*../../src/test/cases","*01 Login","*/opt/selenium/tests/src/test/cases/01_login.robot","*../../src/test/cases/01_login.robot","*TC001 Verify the login","*<p>If member has clicked 'Remember Me' check box, after the deployment, it's not necessary to input account and password when login. Web do not have the 'Remember Me' function\u003c/p>","*Login button is not visible after 60 seconds"]
Обратите внимание, что это не на 100% надежно. Он не проверяет, не экранирован ли сам backsla sh.