繁体   English   中英

JSON JavaScript:转义双引号? concat json与其他字符串

[英]json javascript: escape double quotes? concat json with other string

在JS中,我有一个字典,使用json(json2)进行字符串化:

my_dict = {"1":"hi you'll", "2":"hello"};
as_string = JSON.stringify(my_dict);

我需要将此作为值添加到表单,但是表单本身以字符串开头:

var my_form = '<form><input value = "'+as_string+'"></form>'

my_form是一个字符串,因为它以DOM的形式添加到文档中(创建节点,添加innerHTML,在文档中插入)

问题是双引号搞砸了-my_dict中有引号,而my_form中有引号。 但是json是否不应该逃脱双重qoutes? 那不是它的一部分吗? 还是我需要这样做? 还是有其他方法?

您需要使用RegExp编码HTML,f.ex的字符串:

as_string = JSON.stringify(my_dict).replace(/\"/g,'&quot;');

或尽可能使用DOM操作。

my_form是一个字符串,因为它以DOM的形式添加到文档中(创建节点,添加innerHTML,在文档中插入)

通过将字符串粉碎在一起来生成代码要痛苦得多,这值得。 不要这样 使用标准DOM,而不是innerHTML。 那会照顾您的逃生。

 var frm = document.createElement('form');
 var ipt = document.createElement('input');
 ipt.value = as_string;
 frm.appendChild(ipt);

但是json是否不应该逃脱双重qoutes?

编码为JSON将转义JSON格式的引号。 然后,您将JSON嵌入HTML中,因此也需要对HTML进行转义。 (或者,按照我上面的建议,绕过HTML并直接进行DOM操作)。

如果只想将其保留在DOM中,也可以使用转义

my_dict = {"1":"hi you'll", "2":"hello"};
as_string = escape(JSON.stringify(my_dict));

// as_string : %7B%221%22%3A%22hi%20you%27ll%22%2C%222%22%3A%22hello%22%7D

UNESCAPE当你值回,

as_string = unescape(as_string)

// as_string : {"1":"hi you'll","2":"hello"}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM