为什么eval()在这里不能反序列化这样一个简单的JSON对象?

问题描述 投票:3回答:4

我正在尝试使用eval()函数通过使用eval函数反序列化此JSON文本。

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

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

但是我收到此错误:

*Microsoft JScript compilation error: Expected ']'*

我是否跳过了无法捕捉的内容?

谢谢

json eval javascript
4个回答
6
投票

您拥有的不是JSON文本。它已经是一个JSON对象。因此,您根本不需要使用eval。您可以直接访问和操纵其属性:

alert(personJSON.FirstName);

3
投票

[尝试检查您的personJSON是否是包含真实json的包装。例如,尝试编写:

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

其中Person是服务序列化的类。

OR

尝试一下:

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

其中GetPerson是服务中的方法名称,加上Result


2
投票

您不是在处理字符串,而是在处理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
投票

您必须将字符串类型传递给变量,如下所示:

var personJSON = '{"FirstName":"Burak","LastName":"Ozdogan","Id":"001","Department":"Information Technologies"}';
© www.soinside.com 2019 - 2024. All rights reserved.