【问题标题】:Filter JSON document in Python keeping original key path structure在 Python 中过滤 JSON 文档,保持原始关键路径结构
【发布时间】:2017-08-04 19:11:54
【问题描述】:

我想知道是否存在现有的 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 Hash 和代码来为每个关键路径生成缺失的结构。我想知道是否有更优雅的解决方案。

【问题讨论】:

    标签: python json filter nested jmespath


    【解决方案1】:

    使用这个表达式

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

    输入:

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

    获取输出:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 2022-08-03
      • 2023-02-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      相关资源
      最近更新 更多