Tradingview客户端将Json结构发送为纯文本/数据



我正在尝试将JSON格式的数据发送到Python/Flask服务器。

根据本文件:https://www.tradingview.com/chart/?symbol=OANDA%3ANAS100USD&解决方案=43000529348

如果警报消息是有效的JSON,我们将发送一个带有"application/json";内容类型标头。否则,我们将发送"text/plain";作为内容类型报头。

唯一的问题是,我得到的似乎取决于变量是否有效。例如:

This works:
{
"tradeid": "5L5A0",
"message": "",
"accountid": 20,
"ticker": 20,
"currentprice": 21,
"action": "X_OPEN"
}

它的内容类型为">";application/json">我这么说是因为在服务器端:

test = request.get_json() 

工作良好

但是当我使用时

ticker: {{close}}代替ticker: 20,然后它进行替换-但是-内容类型必须设置为"text/plain"。我之所以这么说,是因为在这种情况下,只有request.data才能获得非结构化版本的数据。在这种情况下,

request.data

返回数据(完全忽略任何JSON结构(

如何解决这个问题?

TIA-

我遇到了同样的问题,TradingView警报中JSON格式的消息以纯文本形式发送。这是我的信息:

{
"side": "{{strategy.order.action}}",
"symbol": "{{ticker}}",
"type": "{{orderType}}",
"position": "{{positionDirection}}",
"size": "{{size}}",
"funds": "{{funds}}",
"marginMode": "{{marginMode}}",
"autoBorrow": "{{autoBorrow}}",
"orderMode": "{{orderMode}}"
}

帮助

我以前似乎遇到过类似的问题。如果我没有记错的话,TradingView有时会以文本/纯文本格式发送数据,即使它似乎包含有效的JSON,这取决于消息格式。

由于这是我无法更改的,我的方法是在从请求中获取JSON数据时使用force=True,然后检查JSON属性。

这是我使用的代码:

json_data = request.get_json(force=True, silent=True)

添加silent=True也有助于防止get_json在数据不是有效的json时抛出错误,而不是返回None。

最新更新