Javascript JSON.parse在JSON数据的第1行开始处抛出意外字符错误
我对整个JavaScript环境还比较陌生,需要帮助将JSON文件解析为JSON对象以读取文件内容。我已经阅读了很多其他问题和文档,但到目前为止,我还没有看到任何与我的问题相关的东西 第一种情况:我有一个名为test.json的文件,该文件应该从服务器上交付。但出于测试目的,它作为Javascript JSON.parse在JSON数据的第1行开始处抛出意外字符错误,javascript,json,parsing,syntax-error,character,Javascript,Json,Parsing,Syntax Error,Character,我对整个JavaScript环境还比较陌生,需要帮助将JSON文件解析为JSON对象以读取文件内容。我已经阅读了很多其他问题和文档,但到目前为止,我还没有看到任何与我的问题相关的东西 第一种情况:我有一个名为test.json的文件,该文件应该从服务器上交付。但出于测试目的,它作为clusters.json本地存储在与我的html文档相同的文件夹中。HTML文件的代码: <!DOCTYPE html> <meta charset="utf-8"> <html>
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文档声明可以使用{
或[
打开文件
我已经用多个验证工具检查了我的JSON,甚至还使用了页面中的复制粘贴,但所有内容都给出了相同的错误
同样根据问题的答案,我尝试先使用JSON.stringify(jsonTest)
,但没有效果
我可能做错了什么?感谢您的帮助,因为我已经在这个错误上花费了太多时间。谢谢
编辑1:
实际上,我自己的错误是认为使用字符串会使解析器自动加载文件
无服务器修复程序:
我通过使用对的答案成功地从文件中加载了文本。这是我在搜索如何使用文件时得到的答案://
实施修复程序以供将来参考:
// 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对象进行解析,而不是。在尝试解析其内容之前,您必须以某种方式加载该文件
如果您还没有Web服务器,您可能需要一个Web服务器来运行您的网站,并使用AJAX加载文件。尝试不使用
JSON.parse(xxx)
您可以删除var jsonObj=JSON.parse(jsonFile);
JSON.parse正在尝试将您的文件转换为JSON格式,该格式已经是JSON
只需在代码中使用
jsonFile
。从代码中可以看出,您正试图为JSON.parse()指定一个文件名作为参数。JSON.parse()接受一个字符串。您必须掌握文件内容,然后将其传递给JSON.parse()。可能会有所帮助
是否可以在不使用
XMLHttpRequest()的情况下加载文件
function?是的,我相信是这样。你应该这样做:jsonFile='file://c:/my/dir/structure/clusters.json'
。它只在从磁盘提供HTML文件并且json文件在磁盘上时才起作用。或者你可以使用FileReader,更多信息请参见这里:。但我认为这只在加载触发时起作用被点击按钮之类的用户交互所激怒。我认为AJAX调用将是你最好的选择。谢谢@Thijs,我已经修复了它。我将很快更新帖子以显示我的修复。
// 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);