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= ... ")
Итак, я нашел проблемы:
- Мне нужно было https:// в URL, так как через несколько часов я обнаружил, что у меня была ошибка SSL
- Если вы просто используете toString вместо getContentText, это работает. Почему getContentText не работает, я не уверен.
Я думаю, что это код, который вы используете. Я смог разобрать его, открыв необработанный URL-адрес вашего файла JSON для вставки http://pastebin.com/raw/CPam4syG и используя следующий код
var text = document.getElementsByTagName('pre')[0].innerHTML;
var parse = JSON.parse(text);
Итак, в заключение я думаю, что это UrlFetchApp.fetch
это возвращается {}