存在文本时出现JSON.parse错误\'或\"

时间:2016-01-15 06:36:48

标签: javascript php mysql json

在PHP中,我使用mysql_real_escape_string来转换符号``'和"\'\"

之后,我从MySQL中提取数据并在JavaScript中将其用作JSON。

例如,b'已转换为to b\',而在JavaScript中我遇到以下错误:

var a='{"a":"b\'"}';
var b=JSON.parse(a);
alert(b.a);

var a='{"a":"b\""}';
var b=JSON.parse(a);
alert(b.a);

/*
Exception: JSON.parse: expected ',' or '}' after property value in object at line 1 column 9 of the JSON data
*/

4 个答案:

答案 0 :(得分:1)

如果您希望在JSON字符串中包含引号,请添加\

  

实施例

var a = '{"a":"b\'"}';
var b = JSON.parse(a);
alert(b.a);

var a = '{"a":"b\\""}';
var b = JSON.parse(a);
alert(b.a);

答案 1 :(得分:0)

从此行var a='{"a":"b\""}';

中删除额外的引用

修改后的代码:

var a='{"a":"b\"}';
var b=JSON.parse(a);
alert(b.a);

答案 2 :(得分:0)

var a='{"a":"b\'"}';  //or you can use "{\"a\":\"b'\"}";
var b=JSON.parse(a);
alert(b.a);

这是有效的,因为存储在变量a中的值为{"a":"b'"}

var a='{"a":"b\\""}';    //or you can use "{\"a\":\"b\\\"\"}";
var b=JSON.parse(a);
alert(b.a);

对于这种情况,存储在变量a中的值为{"a":"b\""}

您可以尝试通过构造对象来构造JSON应该看起来的字符串,并将其字符串化,如下所示:

var a = { "a" : "b'" };
console.log(JSON.stringify(a));

答案 3 :(得分:0)

从MySQL中提取数据后,使用stripslashes()去除额外的反斜杠。然后将数据编码为JSON。