如何移除复杂对象中指定键值为null的子对象?
解决方案:过滤数组中指定字段为null的对象
核心逻辑是对issues数组执行筛选操作,保留fields.customfield_12000不为null的对象,以下是具体实现示例:
JavaScript 实现
// 原始输入数据 const payload = { "issues":[ { "key":"13996", "fields":{ "customfield_13100":null, "customfield_15400":null, "customfield_13102":null, "customfield_13104":null, "customfield_12809":"", "lastViewed":null, "customfield_12000":[ "870CA25F" ] } }, { "key":"13996", "fields":{ "customfield_13100":null, "customfield_15400":null, "customfield_13102":null, "customfield_13104":null, "customfield_12809":"", "lastViewed":null, "customfield_12000":null } }, { "key":"13996", "fields":{ "customfield_13100":null, "customfield_15400":null, "customfield_13102":null, "customfield_13104":null, "customfield_12809":"", "lastViewed":null, "customfield_12000":[ "870CA25F" ] } } ] }; // 执行过滤 const filteredPayload = { issues: payload.issues.filter(issue => issue.fields.customfield_12000 !== null) }; // 输出结果 console.log(JSON.stringify(filteredPayload, null, 2));
Python 实现
import json # 原始输入数据 payload_json = ''' { "issues":[ { "key":"13996", "fields":{ "customfield_13100":null, "customfield_15400":null, "customfield_13102":null, "customfield_13104":null, "customfield_12809":"", "lastViewed":null, "customfield_12000":[ "870CA25F" ] } }, { "key":"13996", "fields":{ "customfield_13100":null, "customfield_15400":null, "customfield_13102":null, "customfield_13104":null, "customfield_12809":"", "lastViewed":null, "customfield_12000":null } }, { "key":"13996", "fields":{ "customfield_13100":null, "customfield_15400":null, "customfield_13102":null, "customfield_13104":null, "customfield_12809":"", "lastViewed":null, "customfield_12000":[ "870CA25F" ] } } ] } ''' payload = json.loads(payload_json) # 执行过滤 filtered_payload = { "issues": [issue for issue in payload["issues"] if issue["fields"]["customfield_12000"] is not None] } # 输出结果 print(json.dumps(filtered_payload, indent=2))
关键说明
- 你之前尝试的
filterObject是针对对象键值对的过滤方法,但这里需要的是对数组元素的筛选,因此要使用数组级别的过滤API(比如JS的Array.filter、Python的列表推导式) - 筛选条件直接判断目标字段是否不为
null,符合条件的元素会被保留,不符合的则被移除 - 最终将筛选后的数组重新包装为原数据结构,即可得到预期输出
内容的提问来源于stack exchange,提问作者muledev
相关产品推荐
相关产品推荐

