【发布时间】:2018-02-01 03:07:47
【问题描述】:
我对整个 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:JSON 数据的第 1 行第 1 列出现意外字符
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);
【问题讨论】:
标签: javascript json parsing syntax-error character