You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从API返回的JSON响应中提取特定字段(如lastPrice)?

问题:如何修改Flask接口仅返回API响应的特定字段?

我是编程新手,以下是我用于从API请求数据的Flask代码:

@app.route('/quote/{symbol}')
def quote(symbol):
    response = c.get_quote(symbol)
    return response.json()

API返回的JSON响应如下:

{"SPY":{"assetType":"ETF","assetMainType":"EQUITY","cusip":"78462F103","assetSubType":"ETF","symbol":"SPY","description":"SPDR S&P 500","bidPrice":390.2,"bidSize":300,"bidId":"P","askPrice":390.21,"askSize":100,"askId":"P","lastPrice":389.02,"lastSize":2528800,"lastId":"P","openPrice":379.87,"highPrice":389.52,"lowPrice":379.68,"bidTick":" ","closePrice":389.02,"netChange":0.0,"totalVolume":100301958,"quoteTimeInLong":1667001600168,"tradeTimeInLong":1667001600004,"mark":389.02,"exchange":"p","exchangeName":"PACIFIC","marginable":true,"shortable":true,"volatility":0.0109,"digits":2,"52WkHigh":479.98,"52WkLow":348.11,"nAV":0.0,"peRatio":0.0,"divAmount":6.1757,"divYield":1.59,"divDate":"2022-09-16 00:00:00.000","securityStatus":"Normal","regularMarketLastPrice":389.02,"regularMarketLastSize":30,"regularMarketNetChange":0.0,"regularMarketTradeTimeInLong":1667001600004,"netPercentChangeInDouble":0.0,"markChangeInDouble":0.0,"markPercentChangeInDouble":0.0,"regularMarketPercentChangeInDouble":0.0,"delayed":false,"realtimeEntitled":true}}

请问如何修改代码,让接口仅返回响应体中的特定部分,比如lastPrice字段?


解决方案

首先修正路由参数的写法——Flask里路由变量要用尖括号<>,不是大括号{},否则没法正确捕获symbol参数。然后解析API返回的JSON数据,逐层提取lastPrice字段即可,具体修改后的代码如下:

@app.route('/quote/<symbol>')
def quote(symbol):
    response = c.get_quote(symbol)
    data = response.json()
    # 先通过symbol键拿到对应股票的数据块,再提取lastPrice
    last_price = data[symbol]['lastPrice']
    # 返回只包含lastPrice的JSON响应
    return {'lastPrice': last_price}

额外说明:

  • 如果需要返回多个特定字段,比如同时获取lastPrice和bidPrice,可以扩展返回的字典:
return {
    'lastPrice': data[symbol]['lastPrice'],
    'bidPrice': data[symbol]['bidPrice']
}
  • 为了防止API返回结构变更或股票代码不存在导致的报错,可以加个简单的异常处理:
@app.route('/quote/<symbol>')
def quote(symbol):
    response = c.get_quote(symbol)
    data = response.json()
    try:
        return {'lastPrice': data[symbol]['lastPrice']}
    except KeyError:
        return {'error': '无法获取目标字段或股票代码无效'}, 404

内容的提问来源于stack exchange,提问作者topski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:35:56