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

Python中如何移除JSON数组多余字段仅保留指定目标字段

实现方案

最直接高效的方式是在调用jsonify返回数据前,先对原始数据做字段裁剪,只保留你需要的键值对,不需要额外依赖。

基础实现(推荐)

直接遍历原始数据列表,通过字典推导式提取目标字段即可:

from flask import jsonify

# 你的原始全量数据
raw_data = [
    {
        "hostname": "bla",
        "ipaddress": "192.168.1.10",
        "subnetmask": "255.255.255.0",
        "iloip": "192.168.1.11"
    }
]

# 指定需要保留的字段
target_fields = ["hostname", "ipaddress"]
# 逐行过滤字段
filtered_data = []
for item in raw_data:
    filtered_item = {field: item[field] for field in target_fields}
    filtered_data.append(filtered_item)

# 过滤后的数据传给jsonify返回
return jsonify(filtered_data)

如果担心部分数据条目缺少指定字段触发KeyError,可以把字典取值逻辑改成item.get(field),缺字段时会自动填充None,不会中断接口返回:

filtered_item = {field: item.get(field) for field in target_fields}

规范化实现(适合中大型项目)

如果项目里接口较多、字段规则复杂,可以用序列化组件统一控制返回字段,比如用marshmallow定义返回结构,序列化时会自动过滤未声明的字段:

from flask import jsonify
from marshmallow import Schema, fields

# 定义接口返回的字段结构,只写需要返回的字段
class ServerSchema(Schema):
    hostname = fields.Str()
    ipaddress = fields.IP()

# 批量序列化数据,many=True对应列表结构
schema = ServerSchema(many=True)
result = schema.dump(raw_data)

return jsonify(result)

处理后最终返回的JSON结构如下,完全符合要求:

[
  {
    "hostname": "bla",
    "ipaddress": "192.168.1.10"
  }
]

注意:不要先把全量数据转成JSON字符串再反序列化裁剪,会产生不必要的性能损耗,字段裁剪尽量在序列化之前完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:06:25