Ich stelle die Frage nur, weil ich in den letzten 2 Tagen wahrscheinlich unzählige andere Fragen gelesen habe, die ähnlich sind, und Tutorials, die dies immer noch nicht zum Laufen bringen können.

Ich habe eine lokale .json-Datei, die ich laden und mit JavaScript analysieren möchte. Die Datei heißt 'fakeData.json'. Sein Format ist als solches:

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

Ich benutze dies, um zu versuchen, die Datei zu laden:

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

Ich benutze dies, um zu versuchen, die Datei zu analysieren:

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

Ich erhalte folgende Fehler:

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

Möge mir bitte jemand helfen, danke.

1
Brian Lui 22 Nov. 2013 im 03:03

3 Antworten

Beste Antwort

Wenn Sie es so einfach wie möglich haben möchten, würde ich Ihrem JSON-Inhalt ein Präfix voranstellen

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

Dadurch wird Ihre Datei in eine gültige JS-Datei umgewandelt und anschließend mit geladen

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

Danach verfügt jsonData aufgrund der Literalobjektnotation über den erforderlichen Inhalt.

Es gibt keine Möglichkeit, eine JSON-Datei auf Ihre Seite zu laden, andernfalls ohne Ajax / httprequest.

3
tomdemuyt 21 Nov. 2013 im 23:10
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();
1
Matthew Graves 21 Nov. 2013 im 23:09

Wenn Sie alles mit einer JSON-Zeichenfolge inline halten und direkt auf das Objekt zugreifen möchten, können Sie Folgendes tun:

// 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);

Geige

0
Jason 22 Nov. 2013 im 01:59