Python嵌套字典替换异常:添加字典出现引号与转义符
解决字典嵌套替换时出现引号和转义符的问题
问题原因
你用json.dumps(raw_payload)把Python字典转换成了JSON格式的字符串,当把这个字符串赋值给current_dict["payload"]时,它会以字符串形式存储,所以显示时会带引号和转义符——这是字符串在Python中的正常表示方式。
解决方案
直接将原始字典raw_payload赋值给current_dict["payload"],不需要转成JSON字符串:
current_dict = {"header": {"from": "/app/off_grid_control/subscribe", "messageId": "ef6b8e50620ac768569f1f7abc6507a5", "method": "SET", "namespace": "Appliance.Control.ToggleX", "payloadVersion": 1, "sign": "e48c24e510044d7e2d248c68ff2c10ca", "timestamp": 1601908439, "triggerSrc": "Android"}, "payload": {"togglex": {"channel": 0, "onoff": 1}}} raw_payload = {"togglex": {"channel": 0, "onoff": 0}} # 直接赋值字典,跳过json.dumps步骤 current_dict["payload"] = raw_payload print(current_dict)
执行后,current_dict的payload字段会是干净的嵌套字典:
{"header": {"from": "/app/off_grid_control/subscribe", "messageId": "ef6b8e50620ac768569f1f7abc6507a5", "method": "SET", "namespace": "Appliance.Control.ToggleX", "payloadVersion": 1, "sign": "e48c24e510044d7e2d248c68ff2c10ca", "timestamp": 1601908439, "triggerSrc": "Android"}, "payload": {"togglex": {"channel": 0, "onoff": 0}}}
补充说明
如果后续需要把整个current_dict转换成JSON字符串用于传输或存储,再统一调用json.dumps(current_dict)即可,这样不会出现嵌套的字符串转义问题。
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

