如何在javascript中循环使用uncode json字符串?
我得到CBOE选项api返回的以下字符串:如何在javascript中循环使用uncode json字符串?,javascript,json,google-apps-script,google-sheets,Javascript,Json,Google Apps Script,Google Sheets,我得到CBOE选项api返回的以下字符串: {u'inputs': {u'stock_price_max': 50.0, u'high_low_stock_max': None, u'time_frame': u'middle', u'hv30_max': None, u'high_low_stock_min': None, u'symbols': None, u'hv30_min': None, u'low_strike': 3.0, u'high_strike': 4.0, u'indust
{u'inputs': {u'stock_price_max': 50.0, u'high_low_stock_max': None, u'time_frame': u'middle', u'hv30_max': None, u'high_low_stock_min': None, u'symbols': None, u'hv30_min': None, u'low_strike': 3.0, u'high_strike': 4.0, u'industry_codes': None, u'spread_ask_price_max': None, u'stock_price_min': 10.0}, u'output': [{u'stock_price': 43.2, u'stock_hi_lo_percent': 72.9651, u'symbol': u'EWZ', u'industry_code': 55501010, u'max_gain': 0.52, u'high_strike_otm_percent': 0.463, u'low_strike_otm_percent': 2.7778, u'spread_ask': 0.48, u'spread': u'43/42 Put', u'expiry': u'2019-04-18', u'max_gain_to_spread_ask_percent': 108.3333, u'hv30': 27.3836}, {u'stock_price': 41.37, u'stock_hi_lo_percent': 21.7957, u'symbol': u'FXI', u'industry_code': 55501010, u'max_gain': 0.26, u'high_strike_otm_percent': 0.8944, u'low_strike_otm_percent': 2.103, u'spread_ask': 0.24, u'spread': u'41/40.5 Put', u'expiry': u'2019-05-17', u'max_gain_to_spread_ask_percent': 108.3333, u'hv30': 20.2925}
我想循环遍历它,并将元素放入谷歌电子表格中的单元格中。我有以下代码:
function myFunction() {
var response = UrlFetchApp.fetch(endpoint);
var data = response.getContentText();
sheet.getRange("A8").setValue(data);
}
这会将整个字符串放入单元格A8
我试着用绳子绕线
for (i = 0; i < jsonlen; i++) {
sheet.getRange("A:A").setValaue(data['output']['symbol']);
}
(i=0;i{
sheet.getRange(“A:A”).setValaue(数据['output']['symbol']);
}
这将返回“未定义”。因此,问题是:
1) 如何从字符串的“输出”部分提取所需的元素
2) 将符号输入A3、A4等,然后将股票价格输入B3、B4等
3) 如何识别字符串的长度以使循环正常工作
直到绳子完全绕起来
非常感谢 - 您希望检索
和symbol
的值stock\u price
属性,并希望将它们分别放在活动电子表格的“A”和“B”列中output
- 您希望将第3行中的值放入
- 您希望使用谷歌应用程序脚本实现这一点
的属性有一个数组。和output
和symbol
在数组中。stock\u price
- 因此,首先,需要准备好要放入电子表格的值
- 在这种情况下,这些值被放入活动工作表上“A”列和“B”列的第3行
- 在您的例子中,如果
实际上是data
的字符串值,它具有Python2的unicode文本,则需要替换{u'inputs':{u'outputs',u'outputs':[###]}
。因此,在本例中,请将u
放在data=JSON.parse(data.replace(/u\'\\'\'/g,“\”).replace(/None/g,“null”);
。请注意这一点var values=data.output.map(函数(e){return[e.symbol,e.stock\u price]}之前。
如果我误解了你的问题,并且这不是你想要的结果,我很抱歉。输出正确吗?你能验证一下吗,因为响应可能是一个JSON对象(更容易处理)),你说API返回的是一个字符串,但它的“[”和”格式奇怪{.谢谢Kessy.是的,你是对的,我用json将unicode固定为正确的json.parsethank这太好了。我学到了很多。正如你所建议的,稍微修改一下:var data=json.parse(response.getContentText());这就完成了任务。非常感谢!@user1903663感谢您的回复和添加信息。我很高兴您的问题得到解决。我还修改了脚本。也谢谢您。
function myFunction() {
var response = UrlFetchApp.fetch(endpoint);
var data = JSON.parse(response.getContentText());
var values = data.output.map(function(e) {return [e.symbol, e.stock_price]});
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(3, 1, values.length, values[0].length).setValues(values);
}