JS:将值从textarea转换为有效的JSON对象

时间:2018-08-13 05:37:27

标签: javascript json

我正在尝试创建一个文本区域,用户可以在其中编辑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    \"thing1\": \"\",\n    \"thing2\": [],\n    \"thing3\": [],\n    \"thing4\": [],\n    \"thing5\": [],\n    \"thing6\": false,     \n}"
*/

代码完整地完成,没有引发任何错误,但是创建的JSON字符串仍然充满换行符。尝试访问任何键,例如alert(rule.thing6);不返回任何内容,而不是返回false。如何将textarea值转换为有效的JSON对象?我不需要保留换行符。

3 个答案:

答案 0 :(得分:0)

实际的字符串不包含换行符(\ n),而是转义的换行符(\ n)。换行符将被呈现为换行符。

要删除这些内容,请像.replace(/\\n/g, '')这样使用(JSON.stringify(rule)).replace(/\\n/g, '')

此外,您最后还有一个逗号,这使得json无效\"thing6\": false,}"应该为\"thing6\": false}"

答案 1 :(得分:0)

// Convert the value into a JSON ready string
var rule = JSON.stringify($(this).val());

rule = rule.replace(/\s/g, ""); //add this line

rule = JSON.parse(rule);
alert(JSON.stringify(rule));

此外,您的json对象的最后一个属性后不能包含,(逗号)。

\"thing6\": false,}"应该是\"thing6\": false}"

答案 2 :(得分:0)

JSON.stringify用于将javascript对象转换为JSON字符串。您从textarea获得的值已经是一个(大概是JSON)字符串。

因此,您可以跳过字符串化步骤,只需解析它即可。

// Convert the value into a JSON ready string
var rule = JSON.parse($(this).val());

alert(JSON.stringify(rule))