为什么\在javascript中将数组转换为JSON时添加了开始和结束?

时间:2014-12-11 09:18:31

标签: javascript json

当我尝试将数组转换为JSON时,它转换为完美但在开始和结束时添加\。 为什么?

//code
var myJSON = "";
var FinalResult = JSON.stringify(result);
myJSON = JSON.stringify({"result": FinalResult});
document.write(myJSON);

//Output like
{"result":"[\"How are you?\"]"}

//require
{"result":"["How are you?"]"}

6 个答案:

答案 0 :(得分:2)

这是"字符转义的方式。没关系,如果你不需要它们出现在最终输出中 - 你应该解析字符串并用smth替换它们。

答案 1 :(得分:2)

添加了'\'标记,因为你的JSON(myJSON)中已经有了一个字符串,并且在stringify时。

您应该尝试将每个字符放在数组中,如

var myArray = [“How”,“are”,“you”,“?”]; myArray.join()。replace(“,”,“”);

然后你应该对该数组进行字符串化。

祝你好运!

答案 2 :(得分:2)

这样做的原因是你做了两个JSON.stringify

var FinalResult = JSON.stringify(result);

生成字符串["How are you?"] 当你用{"result": FinalResult}制作一个对象时,你只需将字符串放在result属性中,然后再用

JSON.stringify({"result": FinalResult});

它将转义为FinalResult的字符串。

如果你这样做

JSON.stringify({"result": result});

你得到{"result":["How are you?"]}然后你可以简单地解析回对象和包含数组的属性结果,否则你现在需要解析它以恢复旧数据。 / p>

答案 3 :(得分:1)

添加反斜杠标记以告诉口译员"是字符串的一部分而不是结束引号。

因为json是用引号来构建键和值的,所以需要将这两种类型的引号分开

答案 4 :(得分:1)

这用于在字符串中添加"

答案 5 :(得分:1)

这种情况正在发生,因为您正在拨打JSON.stringify两次。您首先将result转换为JSON,然后将其放入FinalResult;因为它是一个字符串,所以JSON将以文字"字符开头。

然后您将FinalResult放入对象{result: FinalResult},并在此处调用JSON.stringify。这需要逃避那些双引号,以便在解析它们时将它们视为文字。

只要您通过相应的JSON.stringify来电撤消所有JSON.parse来电,一切都应该正常运行。

myObject = JSON.parse(myJSON);
newResult = JSON.parse(myObject.result);