JSON.parse, возвращающий неопределенный объект

Blizzard просто закрыли свой старый API и внесли изменения, так что вам нужен apikey. Я изменил URL на новый API и добавил ключ API. Я знаю, что URL действителен.

var toonJSON = UrlFetchApp.fetch("eu.api.battle.net/wow/character/"+toonRealm+"/"+toonName+"?fields=items,statistics,progression,talents,audit&apikey="+apiKey, {muteHttpExceptions: true})
var toon = JSON.parse(toonJSON.getContentText())

JSON.pase возвращает просто пустой объект

return toon.toSorce() // retuned ({})

Я использовал много времени, чтобы посмотреть, смогу ли я найти проблему. пришли пустыми. Думаю, это как-то связано с "заголовками ответа".

Заголовки ответов: http://pastebin.com/t30giRK1 (я получил их с dev.battle.net (сайт API Blizzards) JSON: http://pastebin.com/CPam4syG

3 ответа

Была та же проблема, это работает для меня (не забудьте вставить свой ключ)

var toonJSON = UrlFetchApp.fetch("https://eu.api.battle.net/wow/character/"+toonRealm+"/"+toonName+"?fields=items%2Cstatistics%2Cprogression%2Caudit&locale=en_GB&apikey= ... ")

Итак, я нашел проблемы:

  1. Мне нужно было https:// в URL, так как через несколько часов я обнаружил, что у меня была ошибка SSL
  2. Если вы просто используете toString вместо getContentText, это работает. Почему getContentText не работает, я не уверен.

Я думаю, что это код, который вы используете. Я смог разобрать его, открыв необработанный URL-адрес вашего файла JSON для вставки http://pastebin.com/raw/CPam4syG и используя следующий код

var text = document.getElementsByTagName('pre')[0].innerHTML;
var parse = JSON.parse(text);

Итак, в заключение я думаю, что это UrlFetchApp.fetch это возвращается {}

Другие вопросы по тегам