Почему eval () не работает здесь для десериализации такого простого объекта JSON? - PullRequest
2 голосов
/ 20 июня 2010

Я пытаюсь использовать функцию eval () для десериализации этого текста JSON с помощью функции eval.

  var personJSON = {"FirstName":"Burak","LastName":"Ozdogan","Id":"001"
,"Department":"Information Technologies"};

  var personBurakOzdogan = eval('(' + personJSON + ')');    

Но я получаю эту ошибку:

*Microsoft JScript compilation error: Expected ']'*

Есть ли что-то, что я пропускаю, что я не могу поймать?

Спасибо

Ответы [ 4 ]

5 голосов
/ 20 июня 2010

То, что у вас есть, не является текстом JSON.Это уже объект JSON.Так что вам не нужно использовать eval вообще.Вы можете напрямую обращаться к его свойствам и манипулировать ими:

alert(personJSON.FirstName);
2 голосов
/ 30 ноября 2012

Попробуйте проверить, является ли ваш personJSON оболочкой, содержащей настоящий json.Например, попробуйте написать:

var person = eval('(' + personJSON.Person + ')')

, где Person - класс, сериализованный службой.

ИЛИ

попробуйте это:

var person = eval('(' + personJSON.GetPersonResult + ')')

где GetPerson - имя метода в сервисе, плюс Result.

1 голос
/ 20 июня 2010

вы имеете дело не со строкой, а с объектом json. Вы пытаетесь оценить объект json как строку для создания объекта json.

var personJSON = 
'{"FirstName":"Burak","LastName":"Ozdogan","Id":"001","Department":"Information Technologies"}';

var personBurakOzdogan = eval('(' + personJSON + ')');   

это должно работать, хотя это не имеет особого смысла. это имеет больше смысла:

  var personBurakOzdogan = {"FirstName":"Burak","LastName":"Ozdogan","Id":"001","Department":"Information Technologies"};
0 голосов
/ 01 декабря 2013

Вы должны передать в переменную строковый тип, как показано ниже:

var personJSON = '{"FirstName":"Burak","LastName":"Ozdogan","Id":"001","Department":"Information Technologies"}';
...