Javascript 格式化JSON对象,从单引号到双引号
我正在使用一个提供给我的数据集,并试图解析(使用节点)返回给我的JSON对象 事实证明,它们都使用单引号,根据我的研究,JSON使用双引号 返回的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.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;
}