这是我第一次玩JSON API而且我的java非常生疏。
我试图执行以下操作:
将name变量插入到url字符串中,这是我想要生效的JSON。在这种情况下,API输出如下所示:
[ { " id":" ethereum", " name":" Ethereum", "符号":" ETH", "排名":" 2", " price_usd":" 95.3675", " price_btc":" 0.0605977", " 24h_volume_usd":" 152223000.0", " market_cap_usd":" 8713986432.0", " available_supply":" 91372705.0", " total_supply":" 91372705.0", " percent_change_1h":" 0.38", " percent_change_24h":" 1.38", " percent_change_7d":" 37.07", " last_updated":" 1494105266" } ]
接下来我想拉出"符号"来自JSON的项目并将其返回到电子表格。在这种情况下,该功能将接受"以太坊"并返回" ETH"。
以下是我的代码。每当我运行它时,我得到一个错误,说我的名称变量未定义,导致URL看起来像这样(说" undefined"而不是" ethereum"):
https://api.coinmarketcap.com/v1/ticker/undefined/?convert=USD
我做错了什么?
function getSymbol (name) {
var url = "https://api.coinmarketcap.com/v1/ticker/"+name+"/?convert=USD";
var response = UrlFetchApp.fetch(url);
var text = response.getContentText();
var json = JSON.parse(text);
var sym = json["symbol"];
return sym;
}
答案 0 :(得分:1)
返回类型是一个对象数组,即json = [{object1},{object2}]
即使只有一个元素,你仍然需要像这样访问它
var sym = json[0]["symbol"]
//or
var sym = json[0].symbol
您的最终代码如下所示:
function getSymbol (name) {
var url = "https://api.coinmarketcap.com/v1/ticker/"+name+"/?convert=USD";
var response = UrlFetchApp.fetch(url);
var text = response.getContentText();
var json = JSON.parse(text);
var sym = json[0]["symbol"];
return sym;
}