未捕获(在promise中)SyntaxError:获取函数中的意外标记'

时间:2016-03-07 19:23:03

标签: javascript json fetch

我有几个结构如下的JSON文件(让我们称之为info.json):

{
  'data': {
    'title': 'Job',
    'company': 'Company',
    'past': [
      'fulltime': [
        'Former Company'
      ],
      'intern': [
        'Women & IT',
        'Priority 5'
      ]
    ],
    'hobbies': [
      'playing guitar',
      'singing karaoke',
      'playing Minecraft',
    ]
  }
}

在一个单独的JavaScript文件中,我有一个如下所示的函数:

function getJSONInfo() {
  fetch('info.json').then(function(response) {
    return response.json();
  }).then(function(j) {
    console.log(j);
  });
}

当我运行getJSONInfo()时,我一直收到此错误:

Uncaught (in promise) SyntaxError: Unexpected token '

我错过了什么?我在任何地方都没有流浪',所以我不确定是什么问题。

2 个答案:

答案 0 :(得分:6)

您需要为有效json的属性设置双引号。

您可以使用http://jsonlint.com/等json验证程序来检查语法是否正确。

另外,正如shayanypn指出的那样,“过去”应该是一个对象,而不是一个数组。您试图将“过去”定义为对象文字,但使用方括号表示数组。

答案 1 :(得分:1)

你完全无效

1-你应该使用双引号

对象属性的错误语法

"past": [
    "fulltime": [
        "Former Company"
    ],
    "intern": [
        "Women & IT",
        "Priority 5"
    ]
],

它应该睡觉

"past": {
    "fulltime": [
        "Former Company"
    ],
    "intern": [
        "Women & IT",
        "Priority 5"
    ]
},

您的有效json是

{
    "data": {
        "title": "Job",
        "company": "Company",
        "past": {
            "fulltime": [
                "Former Company"
            ],
            "intern": [
                "Women & IT",
                "Priority 5"
            ]
        },
        "hobbies": [
            "playing guitar",
            "singing karaoke",
            "playing Minecraft"
        ]
    }
}