Отличный результат от JSON.parse с использованием Firefox Scratchpad против узла / JSFiddle - PullRequest
0 голосов
/ 06 ноября 2018
var primariesText, primaries;
//var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; //node
var requestURL = 'https://raw.githubusercontent.com/WFCD/warframe-items/development/data/json/Primary.json';
var request = new XMLHttpRequest();
request.open('GET', requestURL);
request.responseType = 'json';
request.send();
request.onload = function() {
  primariesText = request.response;
    //console.log(primariesText);
}
primaries = JSON.parse(JSON.stringify(primariesText[0]));
console.log(primaries);

Я попробовал этот скрипт из 3 парсера и получил разные результаты:

Когда я запускаю его в блокноте Firefox, он отлично выводит объект JS.

Когда я запускаю его в узле или JSFiddle https://jsfiddle.net/bn56hspk/, Я получил

TypeError: Cannot read property '0' of undefined

указывает на массив primariesText [0].

Причина, по которой я поставил [0], заключается в том, чтобы избавиться от большинства скобок. Я попробовал оба primariesText []

SyntaxError: Unexpected token ]

или primariesText

* * Узел тысяча двадцать-одиной: * * одна тысяча двадцать-дв

SyntaxError: Unexpected token u in JSON at position 0

JSFiddle:

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

ни работает.

Что мне не хватает?

1 Ответ

0 голосов
/ 06 ноября 2018

Проблема в том, что вы пытаетесь проанализировать JSON до того, как будет вызвана функция onload. Так что primariesText просто не определено.

Здесь я анализирую его внутри функции onload и работает как положено (обратите внимание, как здесь закрывающаяся фигурная скобка } заканчивается в конце кода)

var primariesText, primaries;
//var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; //node
var requestURL = 'https://raw.githubusercontent.com/WFCD/warframe-items/development/data/json/Primary.json';
var request = new XMLHttpRequest();
request.open('GET', requestURL);
request.responseType = 'json';
request.send();
request.onload = function() {
  primariesText = request.response;
    //console.log(primariesText);

primaries = JSON.parse(JSON.stringify(primariesText[0]));
console.log(primaries)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...