javascript - JSON.parse 在 JSON 数据的第 1 行开头引发意外字符错误

标签 javascript json parsing syntax-error character

我对整个 JavaScript 环境还比较陌生,我需要帮助将 JSON 文件解析为 JSON 对象以读取文件的内容。我一直在阅读很多其他问题和文档,但到目前为止我还没有看到任何与我的问题相关的内容。

首先是这种情况:我有一个名为 test.json 的文件,该文件应该从服务器传送。但出于测试目的,它作为 clusters.json 本地存储,与我的 html 文档位于同一文件夹中。 HTML 文件代码:

<!DOCTYPE html>
<meta charset="utf-8">
<html>
<head>
    <title>JSON THINGIE</title>
</head>
<body>
    <h1>A Header</h1>
    <p id="textone">sample text</p>
    <script>
        var jsonFile = "/clusters.json";
        var jsonObj = JSON.parse(jsonFile);
    </script>
</body>
</html>

代码执行到 JSON.parse(jsonTest);,然后抛出此错误(来自 mozilla 调试工具):

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

JSON 文件 (clusters.json)

{
    "occupation":{
      "employment":[
         {
            "id":1,
            "cluster_name":"Tekenaar",
            "weight":0.5,
            "similarity":0.1,
         },
         {
            "id":4,
            "cluster_name":"Tekenaar Constructeur",
            "weight":0.6,
         }
      ],
      "education":[
         {
            "id":2,
            "cluster_name":"HBO",
            "weight":1,
         },
         {
            "id":3,
            "cluster_name":"HBO",
            "weight":1,
         }
      ]
   }
}

显然 { 左括号是错误的,但 JSON 文档指出可以使用 {[ 打开文件。

我已经使用多个验证器工具检查了我的 JSON,甚至使用了 JSON Example 中的复制粘贴页面,但所有内容都给出相同的错误。

同样按照this的回答问题,我首先尝试使用 JSON.stringify(jsonTest) ,但没有成功。

我可能做错了什么?感谢任何帮助,因为我已经在这个错误上花费了太多时间。谢谢。

编辑 1: 确实是我自己的错误,认为使用字符串会让解析器自动加载文件。

无服务器修复: 我通过使用 this question 的答案成功从文件中加载文本。 。这是我在搜索如何使用 file:// 时发现的。

修复的实现以供将来引用:

// URL to the file
var jsonFile = 'file:///C://Users//Daan//Projects//Temp Name//clusters.json'

function readTextFile(file) {
    var rawFile = new XMLHttpRequest();
    rawFile.open("GET", file, false);
    rawFile.onreadystatechange = function () {
        if (rawFile.readyState === 4) {
            if (rawFile.status === 200 || rawFile.status == 0) {
                var allText = rawFile.responseText;
                // Show alert with the read text.
                alert(allText);
            }
        }
    }
    rawFile.send(null);
}

readTextFile(jsonFile);

最佳答案

var jsonFile = "/clusters.json"; 不会加载文件,它只是创建一个字符串。下一行尝试将字符串解析为 JSON 对象,但事实并非如此。在尝试解析其内容之前,您必须以某种方式加载该文件。

如果您还没有网络服务器,您可能需要一个网络服务器来运行您的网站,并使用 AJAX 加载文件。

关于javascript - JSON.parse 在 JSON 数据的第 1 行开头引发意外字符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45841188/

相关文章:

javascript - 如何将输入值添加到数组中

java - 将 .txt 文件解析为不同的数组

Javascript - 命名空间与闭包之间的区别?

javascript - 在标记mapbox.js上添加自定义图标

mysql - fullcalendar调度程序mysql资源json

c# - 如何在 C# 中创建键/值对数组?

c - 解析字符数组

c++ - 用于检测分号终止的 C++ for 和 while 循环的正则表达式

javascript - C# 将日期时间转换为日期 javascript

javascript - 如何在鼠标指针的右侧/左侧显示传单弹出窗口?