带单引号的JSON.parse问题

时间:2016-06-24 06:18:42

标签: javascript

我有以下JSON字符串

var value = "{'type':'youtube','id':'https://www.youtube.com/embed/JlLGdc71LUc','title':'<strong>mental</strong> <strong>health</strong> & it's benifits for testqaabhi','playerId':'','playerKey':''}";

如果我使用JSON.parse(value);而不是给我错误。我只想用双引号替换单引号,但在it's字符串中除外。任何人都可以建议任何方法。我有另一个使用正则表达式替换它的解决方案。但我一次又一次地调用替换方法。所以,如果有人可以最小化它。

value.replace(/^{'/,'{"').replace(/'}$/,'"}').replace(/':'/g,'":"').replace(/','/g,'","')

JSON字符串不正确,来自我无法控制的其他来源。所以无法更新JSON字符串。

4 个答案:

答案 0 :(得分:0)

你可以使用它。

var xx="{'type':'youtube','id':'https://www.youtube.com/embed/JlLGdc71LUc','title':'<strong>mental</strong> <strong>health</strong> & it's benifits for testqaabhi','playerId':'','playerKey':''}";

JSON.parse(JSON.stringify(xx));

答案 1 :(得分:0)

值是一个对象。 (从对象文字创建)

JSON.parse()用于将包含JSON表示法的字符串转换为Javascript对象。

您的代码将对象转换为字符串(通过调用.toString())以尝试将其解析为JSON文本。 默认的.toString()返回“[object Object]”,这是无效的JSON;因此错误。

使用JSON.stringify()函数将您的JS对象转换为JSON对象...之后您可以为您的JSON对象调用JSON.parse()

答案 2 :(得分:0)

JSON.parse(value.replace(/'/g,"\"").replace(/"s/g,"'"))

答案 3 :(得分:0)

{
"type": "youtube",
"id": "https://www.youtube.com/embed/JlLGdc71LUc",
"title": "<strong>mental</strong> <strong>health</strong> & its benifits for testqaabhi",
"playerId": "",
"playerKey": ""
}

我将是一个有效的JSON。您的JSON失败,因为您在标题上使用了引号(&#39;)。

使用此

对testqaabhi的好处

而不是

它对testqaabhi的利益