我希望解決 FLASK 的問題。
我將這種型別的輸入發送到 Flask 服務器:
[
"tradeid": "5L5A0",
"message": "",
"accountid": 20,
"ticker": {{ticker}},
"currentprice": {{close}},
"action": "X_OPEN"
]
我也嘗試過(更改]為}):
{
"tradeid": "5L5A0",
"message": "",
"accountid": 20,
"ticker": {{ticker}},
"currentprice": {{close}},
"action": "X_OPEN"
}
服務器確實更改了 {{ticker}} 和 {{close}} 值,以便它們被實際資料“填充”(如除錯器中所示):
(pdb) p request.data b'[\n "tradeid": "5L5A0",\n "message": "",\n "accountid": 20,\n "ticker": BTCUSDT,\n "currentprice" : 19091.4,\n "動作": "X_OPEN"\n]'
The snippet of code looks like this:
671 @tview_api.route('/record_alerts', methods=['GET', 'POST'])
672 def save_tview_alerts( ):
673 try:
674 breakpoint()
675 #req_data = request.get_json()
676 -> req_data = request.data
問題是它以純文本而不是 json 的形式發送(否則request.get_json()會起作用)。
如何將此結果轉換為 JSON 格式?
任何幫助、提示或建議將不勝感激
TIA
更新:
感謝所有回復的人。有人問我是否可以將資料發送為:“application/json” 我使用的是 Tradingview 的 Webhook。他們告訴我“他們正在努力”——但是——與此同時,我正試圖找到一種解決方法。
再次,任何幫助,提示或建議將不勝感激
背景訊息在這里:Tradingview 客戶端將 Json 結構作為純文本/資料發送
uj5u.com熱心網友回復:
首先,這不是有效的 JSON 語法:
[
"tradeid": "5L5A0",
"message": "",
"accountid": 20,
"ticker": BTCUSDT,
"currentprice": 19091.4,
"action": "X_OPEN"
]
[...]分隔符用于指定list,例如:
["one", "two", "three"]
如果您想要key: value專案,您需要一個字典(在 JSON 用語中稱為“物件”):
{
"tradeid": "5L5A0",
"message": "",
"accountid": 20,
"ticker": BTCUSDT,
"currentprice": 19091.4,
"action": "X_OPEN"
}
除了這仍然不是有效的語法,因為BTCUSDT它不是有效的 JSON 值:它既不是字串,也不是數字,也不是布林值,也不是 null。你需要解決這個問題:
{
"tradeid": "5L5A0",
"message": "",
"accountid": 20,
"ticker": "BTCUSDT",
"currentprice": 19091.4,
"action": "X_OPEN"
}
使用上面的資料和這段代碼:
from flask import Flask, request, make_response
tview_api = Flask(__name__)
@tview_api.route("/record_alerts", methods=["GET", "POST"])
def save_tview_alerts():
req_data = request.get_json(force=True)
return req_data
我可以毫無錯誤地發布上述資料。
您需要將模板更新為如下所示:
{
"tradeid": "5L5A0",
"message": "",
"accountid": 20,
"ticker": "{{ticker}}",
"currentprice": {{close}},
"action": "X_OPEN"
}
因為我request.get_json(force=True)在上面的代碼中使用,所以我們不關心Content-type請求的頭部。如果您可以確保使用適當的Content-type標頭 ( application/json),那么您可以簡單地參考該request.json屬性。
如果您不確定 JSON 語法,您可以使用像這樣的 JSON 驗證器來檢查您的資料。例如,嘗試使用不帶引號的字串驗證您的字典,該站點告訴我們:
Error: Parse error on line 5:
...id": 20, "ticker": BTCUSDT, "currentpr
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/515235.html
