如何使用Python 3.9过滤MS Graph API返回JSON中的null值
Python 3.9 过滤JSON中null值的方法
你可以通过递归函数处理JSON反序列化后的Python对象,统一移除所有值为None(JSON中null反序列化后的对应类型)的字段,支持嵌套的字典、列表结构,完全兼容Python 3.9版本。
完整示例代码
import json def filter_null(obj): if isinstance(obj, dict): # 过滤字典中值为None的键,递归处理剩余值 return {k: filter_null(v) for k, v in obj.items() if v is not None} elif isinstance(obj, list): # 递归处理列表中每个元素 return [filter_null(item) for item in obj] else: return obj # 替换为你从MS Graph API拿到的原始JSON字符串 raw_json = ''' [ { "audio": null, "package": null, "pendingOperations": null, "photo": null, "webUrl": null, "createdByUser": null, "lastModifiedByUser": null, "id": "0145415166458484754....", "@odata.type": "#microsoft.graph.driveItem" } ] ''' # 反序列化、过滤、再转回JSON data = json.loads(raw_json) filtered_data = filter_null(data) result = json.dumps(filtered_data, indent=2, ensure_ascii=False) print(result)
输出结果
[ { "id": "0145415166458484754....", "@odata.type": "#microsoft.graph.driveItem" } ]
补充说明
- 如果你通过
requests库调用接口,可直接用response.json()获取反序列化后的对象,无需手动执行json.loads - 递归逻辑支持任意层级的嵌套结构,嵌套字典、列表中的null值都会被自动过滤
- 代码未使用Python 3.9以上版本的特性,可直接运行
内容的提问来源于stack exchange,提问作者ChsharpNewbie
相关产品推荐
相关产品推荐

