Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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对象_Javascript_Node.js_Json_Reactjs_React Native - Fatal编程技术网

当字符串在双引号中有单引号时,如何在Javascript中将该字符串转换为JSON对象

当字符串在双引号中有单引号时,如何在Javascript中将该字符串转换为JSON对象,javascript,node.js,json,reactjs,react-native,Javascript,Node.js,Json,Reactjs,React Native,如果字符串只包含双引号,则可以如下所示进行求解- var str=`{"name":"javascript"}`; var jsonObj=JSON.parse(str) //Works var str = "{'result': ['def', 'abc', 'xyz']}"; str = str.replace(/'/g, '"'); var res = JSON.parse(str); console.log(res.

如果字符串只包含双引号,则可以如下所示进行求解-

var str=`{"name":"javascript"}`;
var jsonObj=JSON.parse(str) //Works
var str = "{'result': ['def', 'abc', 'xyz']}";
str = str.replace(/'/g, '"');
var res = JSON.parse(str);
console.log(res.result);

若字符串只包含单引号,那个么它可以像下面这样求解-

var str=`{"name":"javascript"}`;
var jsonObj=JSON.parse(str) //Works
var str = "{'result': ['def', 'abc', 'xyz']}";
str = str.replace(/'/g, '"');
var res = JSON.parse(str);
console.log(res.result);

但是如果双引号中有单引号,我们如何转换下面的字符串-

var s=`{'error': "No such file or directory: '../FileSystem/3434-5433-124/'"} ` 

这看起来不像是有效的字符串化JSON

var s=`{'error':“没有这样的文件或目录:'../FileSystem/3434-5433-124/”}`
错误
应该用双引号括起来

var s=`{“error”:“没有这样的文件或目录:'../FileSystem/3434-5433-124/'”}`
您可以使用JSON.stringify验证它

JSON.stringify({
错误:“没有这样的文件或目录:'../FileSystem/3434-5433-124/'”
})
假设您使用的是有效的JSON。现在可以用反斜杠转义单引号

var s=`{“error”:“没有这样的文件或目录:'../FileSystem/3434-5433-124/'”}`
const parsed=JSON.parse(s.replace(/\'/g,“\'”);

console.log(已解析)
如果您知道唯一的问题是属性名是单引号,而不是JSON所需的双引号,那么可以使用正则表达式将属性名上的单引号替换为双引号

var s=`{'error': "No such file or directory: '../FileSystem/3434-5433-124/'"} ` 
const regex = /(')(\S*)('):/g
s = s.replace(regex, '"$2":')
const workingJson = JSON.parse(s);

我们应该做到这一点。这将用双引号替换字符串中格式为(单引号)(文本)(单引号)(冒号)的任何部分的单引号,这很可能只是属性名,但请记住,如果字符串的另一部分采用这种格式,它的单引号也会被双引号替换。

是的,它不是有效的字符串化JSON。实际上,这个错误来自于NodeJS应用程序中python派生的进程,在那个里我并没有太多的控制权。python捕获块中捕获的错误消息就是我正在接收的消息。