Javascript JS:将textarea中的值转换为有效的JSON对象
我试图创建一个textarea,用户可以在其中编辑JSON对象以更改程序配置。当用户试图保存配置并将textarea的值转换为JSON对象时,将运行此代码Javascript JS:将textarea中的值转换为有效的JSON对象,javascript,json,Javascript,Json,我试图创建一个textarea,用户可以在其中编辑JSON对象以更改程序配置。当用户试图保存配置并将textarea的值转换为JSON对象时,将运行此代码 // Convert the value into a JSON ready string var rule = JSON.stringify($(this).val()); rule = JSON.parse(rule); alert(JSON.stringify(rule)); /* The alerted string: "{\n
// Convert the value into a JSON ready string
var rule = JSON.stringify($(this).val());
rule = JSON.parse(rule);
alert(JSON.stringify(rule));
/* The alerted string:
"{\n \"thing1\": \"\",\n \"thing2\": [],\n \"thing3\": [],\n \"thing4\": [],\n \"thing5\": [],\n \"thing6\": false, \n}"
*/
代码完成时没有抛出任何错误,但创建的JSON字符串仍然填充了换行符。尝试访问任何键,例如alert(rule.thing6);返回nothing而不是false。如何将textarea值转换为有效的JSON对象?我不需要保留换行符。实际字符串不包含换行符(\n),而是转义的换行符(\n)。换行符将被渲染为换行符 要删除这些内容,请像下面这样使用
.replace(/\\n/g')
(JSON.stringify(rule)).replace(/\\n/g')
最后还有一个逗号,这使得json无效。
\“thing6\”:false,}“
应该是\“thing6\”:false}”
此外,json对象不能在最后一个属性后包含(逗号)
\'thing6\':false,}“
应该是\'thing6\':false}”
这个。JSON.stringify用于将javascript对象转换为JSON字符串。您从textarea获得的值已经是一个(可能是JSON)字符串
因此,您可以跳过stringify步骤,只需对其进行解析
// Convert the value into a JSON ready string
var rule = JSON.parse($(this).val());
alert(JSON.stringify(rule))
这会删除换行符,但JSON仍然不起作用。
“{\'website\”:\”,“tags\:[],“ignore\u blacklist\u tags\”:[],“blacklist\u tags\”:[],“blacklist\u url\”:[],“chain\”:false,}“
最后有一个逗号,这使得JSON无效。“thing6\”:false,}“
应该是”thing6\“:false}”
// Convert the value into a JSON ready string
var rule = JSON.parse($(this).val());
alert(JSON.stringify(rule))