当我尝试将数组转换为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?"]"}
答案 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);