在Python中过滤JSON文档,保持原始密钥路径结构

2024-09-29 07:31:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有一个现有的Python库可以通过完整的密钥路径过滤JSON文档,从而保留文档的原始结构。举个例子:

输入

d = {"a": {"b": "c", "d": "e"}, "f": [{0: 0}, {1: 1}]}
keyPaths = ["a.b", "f[1]"]

期望输出

{"a": {"b": "c"}, "f": [{1: 1}]}

我找到的最接近的解决方案是jmespath MultiSelect Hash操作;但是,我认为它不能创建完整的层次结构。例如:

jmespath.search("{a: a.b, f: f[1]}", d)产生{'a': 'c', 'f': {1: 1}}

但它不允许a.b作为keyval expr的标识符,即{a.b: a.b}无效。一种解决方案是使用MultiSelect散列和代码为每个密钥路径生成缺少的结构。我想知道是否有更优雅的解决方案。你知道吗


Tags: 文档路径jsonsearch层次结构密钥hash解决方案
1条回答
网友
1楼 · 发布于 2024-09-29 07:31:15

使用此表达式

{"a":{"b":a.b}, "f":f[1]}

输入:

{"a": {"b": "c", "d": "e"}, "f": [{0: 0}, {1: 1}]}

要获取输出:

{
  "a": {
    "b": "c"
  },
  "f": {
    "1": 1
  }
}

相关问题 更多 >