Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使字符串可用于JSON.parse()_Javascript_Json_Parsing_Jsonexception - Fatal编程技术网

Javascript 如何使字符串可用于JSON.parse()

Javascript 如何使字符串可用于JSON.parse(),javascript,json,parsing,jsonexception,Javascript,Json,Parsing,Jsonexception,在我的应用程序中,当我在文本字段中输入值为my”name时,框架会生成一个类似(这是我无法控制的)的字符串: 现在,这个字符串被传递给JSON.parse()方法,该方法由于名称字段不明确而产生错误 “名字”:“我的名字” 这将导致JSON异常 我能用这个字符串做些什么吗: "[{\"id\":\"201500000001002\",\"name\":\"my\"name\",\"colorCode\":\"\",\"version\":\"11\",\"nodeOrder\":\"1\"}]"

在我的应用程序中,当我在文本字段中输入值为my”name时,框架会生成一个类似(这是我无法控制的)的字符串:

现在,这个字符串被传递给JSON.parse()方法,该方法由于名称字段不明确而产生错误

“名字”:“我的名字”

这将导致JSON异常

我能用这个字符串做些什么吗:

"[{\"id\":\"201500000001002\",\"name\":\"my\"name\",\"colorCode\":\"\",\"version\":\"11\",\"nodeOrder\":\"1\"}]"
my“name
中的双引号字符转义为
my\”name
,使其对JSON.parse方法有效


我无法控制JSON字符串,我只是在传递名称,因为我的“名称和框架”创建了一个字符串,该字符串将传递给JSON.parse()

我经历了一系列
文本
替换。您可以尝试以下方法:

var str = "[{\"id\":\"201500000001002\",\"name\":\"my\"name\",\"colorCode\":\"\",\"version\":\"11\",\"nodeOrder\":\"1\"}]";

JSON.parse(
str.replace(/\\/i,"").
replace(/{"/g,"{'").
replace(/":"/g,"':'").
replace(/","/g,"','").
replace(/"}/g,"'}").
replace(/'/g,"\@@@").
replace(/"/g,"\\\"").
replace(/@@@/g,"\"")
);

它将返回所需的
JSON
array

可能重复的JSON字符串。我不控制JSON字符串,我只是传递名称,框架为我构造它,在执行JSON.parse()垃圾输入-垃圾输出之前,我必须对其进行操作。您或您的框架不知道如何转义字符串。显示代码-如何执行”输入值”并将其传递给此框架。我在JSP中输入值,该值被读取并转换为JSON字符串,而不转义智能框架代码不在我的控制范围内。因此,我只能使用结果屏幕“[{“id\”:“0\”,“name\”:“1\”,“colorCode\”:“0\,“version\”:“0\,“nodeOrder\”:“1\””@rjoshi如果您输入
my\'name
my\'name
str.replace
将不会执行任何操作,除非您将其结果分配回
str
。此外,在OP的示例
\'name\\:\'my\'name\'
中,这将失败。在输出之后,我将获得[object object],它将不起作用
"[{\"id\":\"201500000001002\",\"name\":\"my\"name\",\"colorCode\":\"\",\"version\":\"11\",\"nodeOrder\":\"1\"}]"
var str = "[{\"id\":\"201500000001002\"}]";
str.replace("\"*","\\\"");
var obj = JSON.parse(str);
var str = "[{\"id\":\"201500000001002\",\"name\":\"my\"name\",\"colorCode\":\"\",\"version\":\"11\",\"nodeOrder\":\"1\"}]";

JSON.parse(
str.replace(/\\/i,"").
replace(/{"/g,"{'").
replace(/":"/g,"':'").
replace(/","/g,"','").
replace(/"}/g,"'}").
replace(/'/g,"\@@@").
replace(/"/g,"\\\"").
replace(/@@@/g,"\"")
);