簡體   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