无法在Python中的JSON字符串中插入变量

2024-10-04 11:22:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用一个变量替换JSON字符串中的一些文本

data = '[ { "exchange": "NSE", "tradingsymbol": "INFY", "transaction_type": "BUY", "variety": "regular", "product": "CNC", "order_type": "MARKET", "quantity": 1, "price": 0, "trigger_price": 0 } ]'

我将“INFY”更改为变量符号,但在发送do请求时收到无效的JSON错误。post()

symbol = "INFY"

data = '[ { "exchange": "NSE", "tradingsymbol": symbol, "transaction_type": "BUY", "variety": "regular", "product": "CNC", "order_type": "MARKET", "quantity": 1, "price": 0, "trigger_price": 0 } ]'

我尝试在stackoverflow上查看类似的主题,但无法在代码中实现它

任何帮助都将不胜感激

已更新

requests.post('https://api.kite.trade/margins/orders', headers=headers, data=data)

print(requests.text)

'{"status":"error","message":"invalid json","data":{},"error_type":"InputException"}'

使用“INFY”代替变量,打印结果(response.text)为:

{"status":"success","data":[{"type":"equity","tradingsymbol":"INFY","exchange":"NSE","span":0,"exposure":0,"option_premium":0,"additional":0,"bo":0,"cash":0,"var":122.96690999999998,"pnl":{"realised":0,"unrealised":0},"total":122.96690999999998}]}

解决方案

@barny的解决方案奏效了:

更新此处以关闭主题

data  = '[ { "exchange": "NSE", "tradingsymbol": "INFY", "transaction_type": "BUY", "variety": "regular", "product": "MIS", "order_type": "LIMIT", "quantity": 1, "price": 100, "trigger_price": 0 } ]'
    
data1 = json.loads(data) 
data1[0]['tradingsymbol']= tradingsymbol
    
jsontext = json.dumps(data1)

response = requests.post('https://api.kite.trade/margins/orders', headers=headers, data=jsontext)   

Tags: dataexchangetypeorderbuyproductpricequantity
1条回答
网友
1楼 · 发布于 2024-10-04 11:22:25

您可以使用json.loads转换为Python字典并在那里进行更改,如下所示:

import json

data  = '[ { "exchange": "NSE", "tradingsymbol": "INFY", "transaction_type": "BUY", "variety": "regular", "product": "MIS", "order_type": "LIMIT", "quantity": 1, "price": 100, "trigger_price": 0 } ]'

data1=json.loads(data)
data1[0]['tradingsymbol']='symbol'
jsontext = json.dumps(data)

相关问题 更多 >