JMespath:使用属性过滤器获取钥匙



我有以下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. 获取具有"拆分"任务的数据集

我能够查询数据集的属性,但无法用某个属性提取数据集的名称。例如,当"标签"包含"草莓"时

这个问题接近了,但基本上说您不能使用Jmespath。

您弄清楚了这个

  • 正如您在评论中所说的那样,将原始数据集重新归一化以使用顺序占整数的整理(而不是用于顶级整理的对象键)通常是最好的方法,如果您想这样做使用Jmespath的通用查询。

  • 您链接到的Stackoverflow帖子在此处更详细介绍

重新归一化数据集

之前和之后
  • 为那些可能想要更多细节的人的好处看起来像

  {
      "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"]
      }
  ]}

最新更新