1

我正在使用 AngularJS 的http()方法加载位于我计算机上的 JSON 文件。该文件的内容是:

{
  "topics": [
    {
      "canonical": "Nebraska Football",
      "alias": "NEB",
      "score": 45,
    },
    {
      "canonical": "Ohio State Football",
      "alias": "OSU",
      "score": 10,
    }
  ]
}

当我加载文件(名为 example.json)时,我在使用 Firefox 和 Safari 时收到一条错误消息,上面写着Error: JSON.parse: expected double-quoted property name. 在 Chrome 中(正如预期的那样,由于它的默认安全性)它只是简单地不起作用。

JSON 最初在 Firefox 中加载良好,但在浏览器更新后它停止工作。

我这样称呼JSON:

$http.get("json/example.json").success(function(data) {
    console.log(data);
});

我也尝试使用 Python 的 SimpleHTTPServer 来运行该站点,但并没有什么不同。如果有人对这里出了什么问题有任何猜测,我将非常感谢您的帮助。谢谢!

4

5 回答 5

3

无效的 Json 尝试

{
    "topics": [
    {
        "canonical": "Nebraska Football",
        "alias": "NEB",
        "score": 45
    },
    {
        "canonical": "Ohio State Football",
        "alias": "OSU",
        "score": 10
    }
]
}
于 2012-09-28T21:01:20.097 回答
1

如果您通过 jsonlint.com 运行 JSON,它会将错误指向},{. 如果您从那里向上看,您会看到,不应该存在的尾随 's。你的 JSON 应该是:

{
  "topics": [
    {
      "canonical": "Nebraska Football",
      "alias": "NEB",
      "score": 45
    },
    {
      "canonical": "Ohio State Football",
      "alias": "OSU",
      "score": 10
    }
  ]
}
于 2012-09-28T21:01:48.577 回答
0

修改后的代码:从最后一项中删除“,”可能会解决您的问题

{
  "topics": [
    {
      "canonical": "Nebraska Football",
      "alias": "NEB",
      "score": 45
    },
    {
      "canonical": "Ohio State Football",
      "alias": "OSU",
      "score": 10
    }
  ]
}
于 2012-09-28T21:02:06.353 回答
0

您的问题是,您的 JSON 中有额外的 s。修改如下:

{
  "topics": [
    {
      "canonical": "Nebraska Football",
      "alias": "NEB",
      "score": 45
    },
    {
      "canonical": "Ohio State Football",
      "alias": "OSU",
      "score": 10
    }
  ]
}
于 2012-09-28T21:02:11.827 回答
0

JSON Lint是验证 JSON 的好地方。这就是说您应该删除,每个数组元素中最终值之后的逗号。所以"score":45,应该是"score":45

于 2012-09-28T21:03:38.023 回答