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

如何在Python中将变量作为值传入JSON字符串中

Python 向JSON字符串传变量的解决方案

你之前的写法失效是因为JSON结构本身就包含花括号,和f-string的变量占位符规则冲突,f-string会把JSON本身的单花括号识别为变量边界,导致解析失败。

优先推荐方案:直接构造字典(适配Elasticsearch场景)

Elasticsearch官方Python客户端原生支持直接传入Python字典作为查询参数,不需要手动拼接JSON字符串,完全不需要处理任何转义逻辑,也不存在格式错误风险,示例代码:

from elasticsearch import Elasticsearch

# 初始化客户端
es = Elasticsearch("http://localhost:9200")
# 代码中的变量
customer_id_val = 123456

# 直接构造查询字典,变量直接填入对应位置即可
search_query = {
    "query": {
        "term": {
            "customer_id": customer_id_val
        }
    }
}

# 直接传入字典调用查询接口,客户端会自动完成序列化
response = es.search(index="你的索引名", query=search_query)

通用方案:用json模块自动序列化

如果确实需要生成JSON字符串,不要手动拼接,先构造Python字典,再用json.dumps()方法转为标准JSON字符串,所有特殊字符、格式要求都会自动处理,不需要手动转义:

import json

customer_id_val = "test_123"
query_dict = {
    "customer_id": customer_id_val,
    "other_param": "带特殊字符的'值"
}

# 自动生成合法JSON字符串,引号、特殊字符自动转义
json_query_str = json.dumps(query_dict, indent=2)

极端场景:强制用f-string拼接(非常不推荐)

如果一定要用f-string手动拼接JSON,需要把JSON本身的花括号转义,用两个连续的花括号{{、}}代表一个字面量花括号:

customer_id_val = 123
json_str = f'''
{{
    "customer_id": {customer_id_val}
}}
'''

这种方式容易出现引号不匹配、特殊字符转义错误、注入风险等问题,非必要不要使用。

针对你提到的是否需要手动转义字符的问题:使用前两种方案时,不需要手动转义任何字符,工具会自动完成所有格式处理,可靠性远高于手动拼接。

内容的提问来源于stack exchange,提问作者Ilya Dachkovsky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:24:03