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

调用Google Cloud Function时JSON解码失败,求解决方案

解决Google Cloud Function POST请求JSON解码失败问题

针对你遇到的Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)错误,即使request.is_json返回True,可以尝试以下排查和解决步骤:

  • 修正Postman请求体格式
    你提供的payload是Python字典格式,但Postman发送请求时需要使用标准JSON格式:

    1. 在Postman的Body标签选择raw,然后将右侧格式切换为JSON
    2. 输入正确的JSON内容(注意使用双引号):
      {
          "symbol": "AAPL",
          "quantity": "5",
          "side": "buy"
      }
      

    不要直接粘贴Python代码到请求体中,JSON不支持单引号和Python语法。

  • 调整get_json()的参数
    在云函数中,给get_json()添加参数强制解析或静默处理错误:

    def trade_stock(request):
        # 静默模式:解码失败时返回None,避免直接抛出错误
        my_data = request.get_json(silent=True)
        if not my_data:
            return {'Code': 'Error', 'Message': 'Invalid JSON payload'}
        
        # 或者强制解析,忽略Content-Type头的影响
        # my_data = request.get_json(force=True)
        
        api.submit_order(
            my_data['symbol'],
            my_data['quantity'],
            my_data['side'],
            'market', 
            'gtc'
        )
        return {'Code': 'Successful'}
    
  • 打印原始请求体排查
    添加日志打印原始请求内容,确认云函数实际收到的数据:

    def trade_stock(request):
        # 打印原始请求体到debug日志
        raw_body = request.get_data().decode('utf-8')
        print(f"Received raw body: {raw_body}")
        
        my_data = request.get_json()
        # 后续代码...
    

    启动云函数时的--debug模式会输出这条日志,你可以检查实际收到的内容是否为合法JSON,是否存在隐藏字符、空内容或格式错误。

  • 确认请求头的正确性
    再次检查Postman的Headers中Content-Type是否严格设置为application/json,不要添加多余的字符或空格,比如避免写成application/json; charset=utf-8以外的格式(虽然大部分情况兼容,但严格匹配可以排除潜在问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:54:20