如何在JavaScript中不使用jQuery读取.json文件?

时间:2013-11-21 23:03:30

标签: javascript json parsing

我只是问这个问题,因为我花了最近两天的时间阅读了无数其他类似的问题和教程,但仍然无法解决这个问题。

我有一个本地.json文件,我想加载并用JavaScript解析。该文件名为' fakeData.json'。其格式如下:

{"UIGroup": {"Parent": null, "Type": "public"}}

我使用它来尝试加载文件:

<script src="fakeData.json"></script>

我正在使用它来尝试解析文件:

var jsonData = JSON.parse('fakeData.json');

我收到了这些错误:

Uncaught SyntaxError: Unexpected token : fakeData.json:1
Uncaught SyntaxError: Unexpected token ILLEGAL : planetPage.html:11

请有人帮助我,谢谢。

4 个答案:

答案 0 :(得分:3)

如果你想让它变得简单,那么我会在你的json内容前加上

var jsonData = {"UIGroup": {"Parent": null, "Type": "public"}}....

将您的文件转换为有效的js文件,然后使用

加载它
<script src="fakeData.json.js"></script>

之后,由于文字对象符号,jsonData将具有所需的内容。

如果没有ajax / httprequest,则无法将json文件加载到页面中。

答案 1 :(得分:1)

您需要先将JSON文本放入字符串变量中,然后才能解析它。

通常使用the XMLHttpRequest object来实现。

<script src="fakeData.json"></script>将尝试将JSON解析为JavaScript。这将抛出一个错误(就像你的情况一样)或创建一个数据结构,然后立即丢弃它,因为它没有在那里分配。

答案 2 :(得分:1)

var jsonData;
function reqListener () {
  jsonData = JSON.parse(this.responseText);
  console.log(jsonData);
};

var oReq = new XMLHttpRequest();
oReq.onload = reqListener;
oReq.open("get", "fakeData.json", true);
oReq.send();

答案 3 :(得分:0)

如果你想使用JSON字符串保持所有内联,并直接访问对象,你可以这样做:

// copy all the JSON text from the file an keep store it in a local string variable. 
var jsonString = '{ "UIGroup": { "Parent": null, "Type": "public" }}';

// parse the string into a JavaScript object
var jsonObj = JSON.parse(jsonString);

// access the object as you usually would
alert(jsonObj.UIGroup.Type);

Fiddle