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

TradingView变量替换后JSON请求转为text/plain的解决方法问询

解决TradingView警报JSON格式被识别为text/plain的问题

问题根源

在TradingView警报的JSON模板中使用{{close}}这类变量时,大概率是变量插入后导致JSON语法不合法,触发TradingView自动将请求头设为text/plain而非application/json。

解决方案

1. 确保JSON模板渲染后语法完全合法

  • 数值类型变量(如{{close}}、{{open}})不要加引号,直接嵌入JSON:
    {"ticker": {{close}}, "symbol": "{{ticker}}", "timestamp": "{{time}}"}
    
    这里{{ticker}}是字符串类型,需要包裹双引号;而{{close}}是数值,直接使用即可。
  • 避免在模板中加入JSON不支持的内容(如注释、多余的逗号),TradingView渲染后必须是标准JSON格式。

2. 手动验证模板有效性

把模板中的变量替换为实际值,用Python的json模块验证是否合法:

import json
# 模拟TradingView渲染后的JSON内容
test_json = '{"ticker": 156.78, "symbol": "AAPL"}'
try:
    json.loads(test_json)
    print("JSON格式合法")
except json.JSONDecodeError as e:
    print(f"JSON错误: {e}")

3. Flask服务器端兼容处理

如果TradingView仍无法正确识别为JSON,在服务器端做降级解析:

from flask import Flask, request
import json

app = Flask(__name__)

@app.route('/tradingview-webhook', methods=['POST'])
def handle_webhook():
    # 先尝试解析application/json格式
    data = request.get_json()
    if not data:
        # 降级解析text/plain格式的内容
        try:
            raw_data = request.data.decode('utf-8')
            data = json.loads(raw_data)
        except json.JSONDecodeError:
            return "无效的JSON格式", 400
    # 后续业务逻辑处理
    print(f"收到数据: {data}")
    return "处理成功", 200

4. 检查TradingView警报设置

  • 确保警报的“消息”字段没有多余的空格、换行或特殊字符;
  • 确认警报触发时,变量{{close}}能正常获取到数值(无空值或异常值)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:20:28