【发布时间】:2017-02-24 02:49:37
【问题描述】:
我必须为一个类重做 JSON.stringify 的功能,我被卡住了......
如果我传递了一个数组,我需要将确切的数组作为字符串返回。但是,当我返回数组时,它会从任何字符串值中去掉引号。例如:
var arr = [8, "hello"];
var addQuotes = function(arr){
return ('[' + arr + ']');
}
addQuotes(arr);
//"[8, hello]"
但是,我需要它返回:
"[8, "hello"]"
如何保留数组值的引号?
【问题讨论】:
-
您需要一次查看一个值,如果给定一个字符串,则在该值的输出中添加引号。
-
那是因为你在字符串上下文中使用数组,JS在字符串化的时候会去掉引号。
x = [1,"hello"]; y = '' + x->[1,hello]。构建 json 不仅仅是将一些文本拼接在一起的简单问题。您实际上是在构建 Javascript 代码(具有更严格的语法),并且必须构建语法上有效的 JS -
...顺便说一句,如果您要复制 JSON 数据,则不需要那些外部单引号。这不是有效的 JSON。
-
@MarcB:OP 正在创建 JSON 数据,而不是 JavaScript 字符串文字。所以外部引号不应该在那里。至于去掉引号,那是令人困惑的。这听起来像是引号是数据的一部分。这是我提到它的唯一原因。
-
@MarcB 你是对的,那是 OP 的工作,通过添加
"'" +手动为 JSONString 添加前缀是一种糟糕的方式来指定字符串是 JSON,尤其是因为它使它无效的 JSON。
标签: javascript arrays string stringify