【问题标题】:JSON.parse returning undefined objectJSON.parse 返回未定义的对象
【发布时间】:2017-08-19 22:07:49
【问题描述】:

暴雪刚刚关闭了他们的旧 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 站点)获得它们) JSON:http://pastebin.com/CPam4syG

【问题讨论】:

    标签: json google-apps-script battlenet-api


    【解决方案1】:

    我认为这是您正在使用的代码。 我可以通过打开您的 pastebin JSON http://pastebin.com/raw/CPam4syG 的原始 URL 来解析它 并使用以下代码

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

    总之,我认为返回的是 UrlFetchApp.fetch {}

    【讨论】:

    • 你知道如何让 UrlFetchApp.fetch 工作吗?我还得出结论,这是一个有效的 JSON。
    • 抱歉,我对那个库不太熟悉
    【解决方案2】:

    所以我发现了问题:

    1. 我需要在 URL 中添加 https://,因为我在几个小时后发现我遇到了 SSL 错误
    2. 如果您只使用 toString 而不是 getContentText 它可以工作。为什么 getContentText 不起作用,我不确定。

    【讨论】:

      【解决方案3】:

      同样的问题,这对我有用(别忘了粘贴你的密钥)

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-30
        • 2017-05-03
        • 2017-07-11
        • 1970-01-01
        • 2016-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多