使用不同的键规范化嵌套 json

Normalize nested json with varying keys

我通过 API 对不同的项目进行了非常嵌套的 json,然后尝试将一些接收到的信息转换为数据帧。

到目前为止,我已经使用这一行来获取我想要的数据框:

df = pd.json_normalize(result, meta=['properties'], record_path=['view', 'item', 'fields', 'field'])

这有时有效,但有时我会收到元键或记录路径本身的 KeyError(KeyError:'view')。我认为这是因为我收到的 json 并不总是完全相同,但会根据所请求信息的项目类型而有所不同。

我现在的问题是,是否有办法跳过没有这些键的数据?或者如果有其他选项可以忽略其中没有这些键的数据?

或者,有没有办法找出哪些项目的密钥不同,并区别对待这些项目?由于我们谈论的转储中有部分 800-1000 个项目,长度 json,我认为我实际上无法手动浏览它们以找到不适合的项目...

非常感谢任何帮助!

快速而肮脏的解决方案是使用 errors='ignore' 选项:

df = pd.json_normalize(result, meta=['properties'], record_path=['view', 'item', 'fields', 'field'], errors='ignore')

如果您还想提取具有不同结构的条目(导致错误的条目),那么最好的办法是从 result 对象中过滤掉它们,然后 运行 pd.json_normalize 再次指定适当的 record_path.