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

如何移除JSON文件数组中的空对象{}?

移除JSON数组中的空对象解决方案

你的代码目前只是删除了目标对象内的SongName和Path字段,但没有将整个空对象从songs数组中移除,所以才会留下{}。以下是修改方案:

修改思路

直接过滤songs数组,只保留需要保留的对象,彻底移除目标对象,而不是先删字段再处理空对象,这样更高效也更简洁。

完整修改代码

import json

with open(filename, 'r') as fp:
    data = json.load(fp)

# 过滤掉所有SongName包含目标song的对象
filtered_songs = []
for item in data['songs']:
    if song not in item["SongName"]:
        filtered_songs.append(item)

# 替换原数组
data['songs'] = filtered_songs

with open(filename, 'w') as fp:
    json.dump(data, fp, sort_keys=True, indent=4, separators=(",", ":"))

更简洁的列表推导式写法

如果逻辑简单,用列表推导式可以一行完成过滤:

import json

with open(filename, 'r') as fp:
    data = json.load(fp)

# 直接生成新的songs数组,排除目标对象
data['songs'] = [item for item in data['songs'] if song not in item["SongName"]]

with open(filename, 'w') as fp:
    json.dump(data, fp, sort_keys=True, indent=4, separators=(",", ":"))

额外说明

原代码中第一个循环只会记录最后一个匹配的songpath,如果存在多个匹配对象,会导致后续删除逻辑出错。上面的修改直接从根源解决问题:不需要删除字段,直接移除整个目标对象,既避免了空对象残留,也修正了原逻辑的潜在bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:05:34