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

Python构造请求JSON时无需多if语句高效排除空值字段方法

Python requests发送JSON时自动剔除空字段的高效实现

核心思路

完全不需要逐字段写if/else判断,也不要手动拼接JSON字符串:先把所有字段和对应变量整理为字典结构,通过字典推导式一次性过滤掉空值字段,最后直接把过滤后的字典传给requests即可。

具体实现步骤

  1. 整理字段与变量的映射关系
    把所有JSON字段名和对应的变量值,按键值对形式写入原始字典,和你预期的JSON结构完全对应即可:
# 预先定义的各字段变量
_var1 = 123
_var2 = 40
_var3 = ""
_var4 = 5

# 构造原始字段映射字典
raw_payload = {
    "id": _var1,
    "weight": _var2,
    "width": _var3,
    "depth": _var4
}
  1. 一行代码过滤空值字段
    用字典推导式统一过滤值为空的字段,你可以根据自己的业务需求调整空值判定规则:
# 示例规则:剔除值为空字符串的字段,保留所有其他类型的值(包括数值0、False等合法值)
# 如果需要同时剔除None,可把判断条件改为 if v not in ("", None)
filtered_payload = {key: value for key, value in raw_payload.items() if value != ""}

运行后得到的filtered_payload正好是你需要的结构:

print(filtered_payload)
# 输出: {'id': 123, 'weight': 40, 'depth': 5}
  1. 直接传入requests发送请求
    requests库原生支持传入字典作为JSON请求体,会自动完成序列化、设置正确的请求头,不需要手动调用json.dumps:
import requests

response = requests.post(
    url="你的目标接口地址",
    json=filtered_payload
)

方案优势

  • 无冗余代码:200个字段只需要在映射字典里写一次对应关系,不需要重复编写判断逻辑,后续增删字段只需要修改映射字典即可
  • 出错概率低:完全避免手动拼接JSON字符串带来的语法错误(比如漏写逗号、特殊字符转义失败等问题)
  • 规则调整灵活:如果后续需要新增剔除空列表、空字典、None值等规则,只需要修改字典推导式里的一行判断条件,不需要逐字段修改逻辑

不建议通过动态读取全局/局部变量名的方式自动收集字段,这种方式隐式依赖变量命名规则,后续维护排查问题的成本很高,显式写字段映射是长期维护成本最低的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:54:23