无法使用JSON.parse()将字符串转换为json

时间:2018-10-28 17:26:15

标签: javascript

json字符串:

str = "{'Link': 'https://careers.powergrid.in/CCBaclogVacancy2018/c/default.aspx',
'Title': 'Apply Online'},{'Link': 'https://careers.powergrid.in/CCBaclogVacancy2018/c/login.aspx',
'Title': 'Login'},{'Link': 'media/pdf/details/all-india-govt-jobs/other-all-india-govt-jobs/8588011698.pdf',
'Title': 'Notification '},{'Link': 'http://www.powergridindia.com/', 'Title': 'Official Website'}"

期望:

json = {'Link': 'https://careers.powergrid.in/CCBaclogVacancy2018/c/default.aspx',
'Title': 'Apply Online'},{'Link': 'https://careers.powergrid.in/CCBaclogVacancy2018/c/login.aspx',
'Title': 'Login'},{'Link': 'media/pdf/details/all-india-govt-jobs/other-all-india-govt-jobs/8588011698.pdf',
'Title': 'Notification '},{'Link': 'http://www.powergridindia.com/', 'Title': 'Official Website'}

我正在尝试使用JSON.parse(str); 它给了我错误:

VM267:1 Uncaught SyntaxError: Unexpected token ' in JSON at position 1
at JSON.parse (<anonymous>)
at <anonymous>:1:6

如何将字符串转换为纯json。

请看看这个。

4 个答案:

答案 0 :(得分:2)

JSON.parse需要一个格式正确的字符串。 JSON数据被写为名称/值对。名称/值对由一个字段名(双引号),一个冒号,一个值(如果是字符串值则用双引号)组成。

此外,您似乎正在尝试描述对象的集合,因此应将它们全部包装在数组中...(请注意,我使用的是“ ES2015字符串,允许多行字符串)” < / p>

const str = `[{
    "Link": "https://careers.powergrid.in/CCBaclogVacancy2018/c/default.aspx",
    "Title": "Apply Online"
},
{
    "Link": "https://careers.powergrid.in/CCBaclogVacancy2018/c/login.aspx",
    "Title": "Login"
},
{
    "Link": "media/pdf/details/all-india-govt-jobs/other-all-india-govt-jobs/8588011698.pdf",
    "Title": "Notification "
},
{
    "Link": "http://www.powergridindia.com/",
    "Title": "Official Website"
}]`;
console.log(JSON.parse(str)[0].Title); // Apply Online

答案 1 :(得分:1)

str = "what 'ever'";
str = str.replace(/'/gi,'"')

这是用regexp和replace()替换所有内容的方法

答案 2 :(得分:1)

您的json无效。

  • 单引号应该是双引号
  • 对象应由[]包裹,以表示数组

因此,要使其成为有效的json,请用方括号将对象包装并替换所有单引号,然后对其进行解析。

str = `[{'Link': 'https://careers.powergrid.in/CCBaclogVacancy2018/c/default.aspx',
'Title': 'Apply Online'},{'Link': 'https://careers.powergrid.in/CCBaclogVacancy2018/c/login.aspx',
'Title': 'Login'},{'Link': 'media/pdf/details/all-india-govt-jobs/other-all-india-govt-jobs/8588011698.pdf',
'Title': 'Notification '},{'Link': 'http://www.powergridindia.com/', 'Title': 'Official Website'}]`

json = JSON.parse(str.replace(/'/g, '"'))
console.log(json)

答案 3 :(得分:0)

对于这里进行的任何数组,您都缺少最外面的包装器。同样,双引号是json中的标准

尝试包装字段。

`{
   "items": [
      {
       "Link": "https://careers.powergrid.in/CCBaclogVacancy2018/c/default.aspx",
       "Title": "Apply Online"
      }, {
        "Link": "https://careers.powergrid.in/CCBaclogVacancy2018/c/login.aspx",
        "Title": "Login"
      }, {
        "Link": "media/pdf/details/all-india-govt-jobs/other-all-india-govt-jobs/8588011698.pdf",
        "Title": "Notification"
      }, {
        "Link": "http://www.powergridindia.com",
        "Title": "Official Website"
      }
    ]
}`