Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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_Replace - Fatal编程技术网

Javascript 格式化JSON对象,从单引号到双引号

Javascript 格式化JSON对象,从单引号到双引号,javascript,node.js,json,replace,Javascript,Node.js,Json,Replace,我正在使用一个提供给我的数据集,并试图解析(使用节点)返回给我的JSON对象 事实证明,它们都使用单引号,根据我的研究,JSON使用双引号 返回的JSON对象示例 在JSON.parse()之前,我一直在使用str.replace()对对象进行排序,这很好,直到我找到像这样的对象 { 'cast_id': 26, 'character': '"Jack Jones"', 'credit_id': '52fe43c59251416c7501d751', 'gende

我正在使用一个提供给我的数据集,并试图解析(使用节点)返回给我的JSON对象

事实证明,它们都使用单引号,根据我的研究,JSON使用双引号

返回的JSON对象示例

JSON.parse()
之前,我一直在使用
str.replace()
对对象进行排序,这很好,直到我找到像这样的对象

{
    'cast_id': 26,
    'character': '"Jack Jones"',
    'credit_id': '52fe43c59251416c7501d751',
    'gender': 2,
    'id': 6840,
    'name': 'Larry Hagman',
    'order': 16,
    'profile_path': '/40PVsGp5Wp5kbUhAefLHqjqbarc.jpg'
},
请注意
'character':'jackjones',
这给我带来了各种各样的问题

我有没有一个库可以帮我解析这一切

我错过什么了吗

供参考: 我无法访问每个记录,因为JSON对象不是单独存储的,而是一个长字符串,最多包含60个JSON对象

我目前有一个帮助解析数据的函数:

function formatJSON(cast) {
    cast = cast.replace(/(\w) "(\w)/g, "$1 *$2");
    cast = cast.replace(/(\w)" /g, "$1* ");         
    cast = cast.replace(/': '/g, '": "');
    cast = cast.replace(/', '/g, '", "' );
    cast = cast.replace(/'},/g, '"},');
    cast = cast.replace(/': /g, '": ');
    cast = cast.replace(/, '/g, ', "');
    cast = cast.replace(/{'/g, '{"');
    cast = cast.replace(/: None}/g, ': "None"}');
    cast = cast.replace(/'}/g, '"}');
    return cast;
}
更新
据报道,数据在python中作为字典使用
ast.literal\u eval()

很好地提取出来。默认情况下,不需要用包含单引号的相同字符串替换由双引号括起来的字符串。
“杰克·琼斯”
“杰克·琼斯”
之间没有区别,因为它们都是
字符串

在您的情况下,您试图替换如下示例:

var str='\'Jack Jones\''。替换(/'/g'');

console.log('\''+str+'\'');
我不确定是否遵循,我对JS还是有点陌生,但是,我意识到我对函数的可怕看法以及它不应该存在的事实。难道你不能要求真正的JSON吗?发明自己格式的人通常会弄错,比如第二个“Jack'O Jones”(“Fighter”)“'
没有任何转义…此数据从何而来?它看起来像是打算使用Python的
ast.literal\u eval()
,而不是JSON来解析。您确定不能让他们提供有效的JSON吗?因为他们使用的是自定义格式,请询问他们您应该如何解析它。也许他们有一个图书馆。@Barmar数据集是这样的
function formatJSON(cast) {
    cast = cast.replace(/(\w) "(\w)/g, "$1 *$2");
    cast = cast.replace(/(\w)" /g, "$1* ");         
    cast = cast.replace(/': '/g, '": "');
    cast = cast.replace(/', '/g, '", "' );
    cast = cast.replace(/'},/g, '"},');
    cast = cast.replace(/': /g, '": ');
    cast = cast.replace(/, '/g, ', "');
    cast = cast.replace(/{'/g, '{"');
    cast = cast.replace(/: None}/g, ': "None"}');
    cast = cast.replace(/'}/g, '"}');
    return cast;
}