这个JSON有什么问题:

What is wrong with this JSON:

我看了几个例子,我认为这是有效的,但是当我加载 JSON 作为脚本文件时,例如:

<script src="../js/side-menu.json"></script>

Chrome 给我错误:

SyntaxError: Unexpected token :

也就是"side-menu":末尾的:。这是 JSON:

{
  "side-menu": {
    "sections": [
      {
        "dashboard": [
          {
            "title": "Firewall",
            "url": "dashboard_2.html",
            "icon": "icon-bulb",
            "menuVisual": "selected"
          }
        ]}
    ]}
}

这可能是因为浏览器将文件解释为 JavaScript?

json 对我来说也不错。检查这个问题,似乎相关

HTML/Javascript: how to access JSON data loaded in a script tag with src set

我不确定您这样做的目的是什么。

<script src="../js/side-menu.json"></script>

这将获取您的 json 并将其解释为 javascript。

也许您正在寻找的是。

 <script language="javascript">`
 var my_json = {
  "side-menu": {
    "sections": [
      {
        "dashboard": [
          {
            "title": "Firewall",
            "url": "dashboard_2.html",
            "icon": "icon-bulb",
            "menuVisual": "selected"
          }
        ]}
    ]}
};
</script>

<script> 标签内。

JS 解析器将花括号与代码块而不是对象文字混淆。您可以通过将其放入括号中来避免这种情况 ({...}).

如果您这样做,您的文件将不再是 JSON。究竟如何解决这个后续问题取决于具体情况,但您必须首先考虑一些不同的事情:您希望包含一个仅包含 JSON 的文件能得到什么?毕竟,如果您这样做,这个 JSON 将不会在变量中可用,因为只有 JSON 值,没有分配给变量。

这里的问题是您正在尝试使用脚本标签加载纯 JSON,该标签默认寻找普通的旧脚本代码。你这里有两个一个选项s -

  1. 在脚本标签中指定type="application/json",同时给它一个id。然后在任何需要访问数据的地方,使用它的 id 找到脚本元素并执行 JSON.parse($("#scriptelementid").html());。如果您不使用它,请将 jQuery 替换为普通的 javascript。

  2. 或者,将您的 json 内容更改为此 -

    var exportedData = {
      "side-menu": {
        "sections": [
          {
            "dashboard": [
              {
                "title": "Firewall",
                "url": "dashboard_2.html",
                "icon": "icon-bulb",
                "menuVisual": "selected"
              }
            ]}
        ]}
    };