Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中循环使用uncode json字符串?_Javascript_Json_Google Apps Script_Google Sheets - Fatal编程技术网

如何在javascript中循环使用uncode json字符串?

如何在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

我得到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'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
    的值
    output
    属性,并希望将它们分别放在活动电子表格的“A”和“B”列中
  • 您希望将第3行中的值放入
  • 您希望使用谷歌应用程序脚本实现这一点
如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一

修改点:
  • output
    的属性有一个数组。和
    symbol
    stock\u price
    在数组中。
    • 因此,首先,需要准备好要放入电子表格的值
修改脚本:
  • 在这种情况下,这些值被放入活动工作表上“A”列和“B”列的第3行
注:
  • 在您的例子中,如果
    data
    实际上是
    {u'inputs':{u'outputs',u'outputs':[###]}
    的字符串值,它具有Python2的unicode文本,则需要替换
    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);
}