Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用JSON解析而不是eval_Javascript_Json - Fatal编程技术网

Javascript 使用JSON解析而不是eval

Javascript 使用JSON解析而不是eval,javascript,json,Javascript,Json,我用JAVA生成了这个字符串,并将其传递给javascript进行解析 这项工作: var childString = '[{title: "Item 1"},{title: "Folder 2", isFolder: true,children: [{title: "Sub-item 2.1"},{title: "Sub-item 2.2"}]},{title: "Item 3"}]'; var childArray = eval(childString); 但是我到处都读到eval==ev

我用JAVA生成了这个字符串,并将其传递给javascript进行解析

这项工作:

var childString = '[{title: "Item 1"},{title: "Folder 2", isFolder: true,children: [{title: "Sub-item 2.1"},{title: "Sub-item 2.2"}]},{title: "Item 3"}]';
var childArray = eval(childString);
但是我到处都读到
eval==evil
,所以我正在研究JSON解析方法。 我尝试使用
JSON.parse(childString)
,但出现了一个错误

我怎么能这样做呢


谢谢

使用
脚本
标记包含在HTML输出中,然后可以使用
JSON.parse
您的数据是有效的JavaScript(这就是
eval
工作的原因),但它不是有效的JSON。例如,您需要在属性的名称周围加引号

例如


根据您的浏览器,您可以找到JSON规范,您可能需要自己定义JSON对象。您可以从下载代码。

您的JSON格式不正确。键和值都需要双引号


您无法使用JSON.parse解析它,因为您的JSON字符串无效。它需要如下:

var childString = '[{"title": "Item 1"},{"title": "Folder 2", "isFolder": true,"children": [{"title": "Sub-item 2.1"},{"title": "Sub-item 2.2"}]},{"title": "Item 3"}]';
好的,:


可以,但我可能仍然会尝试获取有效的JSON。

注意:双引号是必需的。 这是行不通的:

var childString = "[{'title': 'Item 1'},{'title': 'Folder 2', 'isFolder': true,'children': [{'title': 'Sub-item 2.1'},{'title': 'Sub-item 2.2'}]},{'title': 'Item 3'}]";

“但我有一个错误。”错误是什么?我肯定你的意思是
eval===evil
:)是你的朋友。@Felix::)那很酷。无效的json,对吗?@naveen:Yep,键必须用双引号括起来。但不理解您的第二条注释。需要在字符串中传递双引号。因此,您需要对对象“[…]”进行单引号,并在内部使用双引号“[”“…]”。
var childString = '[{"title": "Item 1"},{"title": "Folder 2", "isFolder": true,"children": [{"title": "Sub-item 2.1"},{"title": "Sub-item 2.2"}]},{"title": "Item 3"}]';
var childArray = JSON.parse(childString.replace(/([{, ])([a-zA-Z0-9]+):/g, '$1"$2":'));
var childString = "[{'title': 'Item 1'},{'title': 'Folder 2', 'isFolder': true,'children': [{'title': 'Sub-item 2.1'},{'title': 'Sub-item 2.2'}]},{'title': 'Item 3'}]";