【问题标题】:jmespath : getting keys with property filterjmespath :使用属性过滤器获取键
【发布时间】:2019-08-05 21:13:54
【问题描述】:

我有以下 json :

{
    "dataset_1": {
        "size_in_mb": 0.5,
        "task": "clean",
        "tags": ["apple", "banana", "strawberry"]
    },
    "dataset_2": {
        "size_in_mb": 100,
        "task": "split",
        "tags": ["apple"]
    },
    "dataset_3": {
        "size_in_mb": 1024,
        "task": "clean",
        "tags": ["strawberry"]
    }
}

我该怎么做:

  1. 获取带有“apple”标签的数据集
  2. 获取大于 500mb 的数据集
  3. 获取任务为“拆分”的数据集

我能够查询数据集的属性,但无法提取具有特定属性的数据集的名称。例如,当“tags”包含“strawberry”时,我可以获得 ["strawberry"],但不能获得 ["dataset_1", "dataset_3"]。

This 问题接近,但基本上说你不能使用 jmespath。

【问题讨论】:

  • jfyi ...我最终改变了架构一点点..移动到数组格式而不是对象格式..在“任务”旁边添加了“名称”作为另一个元素

标签: normalization jmespath


【解决方案1】:

你猜到了这个

  • 正如您在评论中所说,重新规范化原始数据集以使用顺序枚举排序规则(而不是顶级排序规则的对象键)通常是最好的方法,如果您想这样做使用 jmespath 进行通用查询。

  • 您链接到的 Stackoverflow 帖子更详细地介绍了这个问题 here

重新规范化数据集之前和之后

  • 为了那些可能想要更详细了解您所说的意思的人的利益我最终稍微更改了架构 ...这是一个“之前和之后”的示例看起来像

之前

  {
      "dataset_1": {
          "size_in_mb": 0.5,
          "task": "clean",
          "tags": ["apple", "banana", "strawberry"]
      },
      "dataset_2": {
          "size_in_mb": 100,
          "task": "split",
          "tags": ["apple"]
      },
      "dataset_3": {
          "size_in_mb": 1024,
          "task": "clean",
          "tags": ["strawberry"]
      }
  }

之后

  {"dataroot":[
      {
          "name":      "dataset_1",
          "size_in_mb": 0.5,
          "task": "clean",
          "tags": ["apple", "banana", "strawberry"]
      },
      {
          "name":      "dataset_2",
          "size_in_mb": 100,
          "task": "split",
          "tags": ["apple", "banana", "strawberry"]
      },
      {
          "name":      "dataset_3",
          "size_in_mb": 1024,
          "task": "clean",
          "tags": ["strawberry"]
      }
  ]}

【讨论】:

    猜你喜欢
    • 2017-05-25
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多