невозможно проанализировать строку json с помощью функции eval сценария java - PullRequest
4 голосов
/ 22 июня 2010

У меня возникла проблема со следующим объектом отклика Json в функции javascript eval: ожидается ошибка JavaScript-сценария} из-за специальных символов Tamás и Török

{[{"userFirstNm":"Naresh","userAsscId":"70336","userLastNm":"Yashwantrao","userLanId":"a70336"},{"userFirstNm":"Tamás","userAsscId":"37732","userLastNm":"Török","userLanId":"a37732"}]}

Есть ли какое-либо решение для решения этой проблемы.

альтернативный текст http://www.freeimagehosting.net/uploads/a1b09b95d1.png альтернативный текст http://www.freeimagehosting.net/uploads/d819fb2191.png

Ответы [ 3 ]

3 голосов
/ 22 июня 2010

А, я знаю, в чем проблема.Для правильной работы eval необходимо заключить выражение объекта в скобки.

alert(eval("({\"userFirstNm\":\"Tamás\",\"userAsscId\":\"37732\",\"userLastNm\":\"Török\",\"userLanId\":\"a37732\"})"));
0 голосов
/ 22 июня 2010

Поместите строку в переменную, а затем поместите ее в переменную

var str = '{"userFirstNm":"Tamás","userAsscId":"37732","userLastNm":"Török","userLanId":"a37732"}';
eval("var obj=" + str);
console.debug ? console.debug(obj) : alert(obj); //outputs the object

И более безопасной альтернативой является функция json_parse: http://www.json.org/json_parse.js;

var obj = json_parse('{"userFirstNm":"Tamás","userAsscId":"37732","userLastNm":"Török","userLanId":"a37732"}');
console.debug ? console.debug(obj) : alert(obj); //outputs the object
0 голосов
/ 22 июня 2010

Сам по себе это не оператор JavaScript, поэтому вы не сможете его оценить.

Эта Perl-программа запускает JavaScript в SpiderMonkey:

use warnings;
use strict;
use JavaScript::SpiderMonkey;
my $stuff = '{"userFirstNm":"Tamás","userAsscId":"37732","userLastNm":"Török","userLanId":"a37732"}';

my $stuff2 = "var k = new Object ($stuff)";

my $js2 = JavaScript::SpiderMonkey->new();
$js2->init();  # Initialize Runtime/Context
my $rc2 = $js2->eval($stuff2);
print "$@\n";

Это не печатает никаких сообщений об ошибках.

Следующее:

my $js = JavaScript::SpiderMonkey->new();
$js->init();  # Initialize Runtime/Context
my $rc = $js->eval($stuff);
print "$@\n";

производит

Error: SyntaxError: invalid label at line 1: {"userFirstNm":"Tam��s","userAsscId":"37732","userLastNm":"T��r��k","userLanId":"a37732"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...