Javascript 使用JSON解析而不是eval
我用JAVA生成了这个字符串,并将其传递给javascript进行解析 这项工作: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
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'}]";