Я использую sun.misc.BASE64Encoder для кодирования зашифрованного значения, которое затем добавляется в поле JSON и затем отправляется клиенту. Я использую функцию eval() Javascript на клиенте для создания объекта из кода JSON. При выполнении Eval(), он выдает ошибку:javascript eval json с base64 закодированным полем
unterminated string literal
Есть другие поля в коде JSON, но я сузил ошибку специально для base64 кодированного поля. Вот виновная линия яваскрипта кода:
var result = eval('(' + xhr.responseText + ')');
Вот объект JSON из Servlet:
{
'resource':'resource?Signature=j79r/2Hly+HqhS/6fdd+prfsR+kUNijUvDN0QJ14ZR43gzYScOMDypt/crks/CEphTUXVptJvSol
1ZOOvScCUhNOCb7dZk/3MKnI5tOewSACXK32/OJNd8hYpZtSTn+WhA6+f9BUIUZWA83U8Cud/Tb8V
R1yQWbDGG/mM/NiUSiY=',
'url':'http://somesite.com/pr'
}
Я не уверен, почему Eval умирает, но, кажется, значение «ресурс» Поле JSON содержит что-то, на что он не заботится.
Заранее спасибо. Tim
Возможно, это \ n, которые убивают eval() ...? – Tim
Кстати, вы на самом деле используете недействительный JSON. JSON использует двойные кавычки вокруг имен свойств и строковых значений, а не одинарных кавычек. Очевидно, это работает, если вы просто «eval», но строгий парсер JSON потерпит неудачу. –