我有以下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"]
}
}
我如何:
- 获取具有称为" Apple"标签的数据集
- 获取大于500MB的数据集
- 获取具有"拆分"任务的数据集
我能够查询数据集的属性,但无法用某个属性提取数据集的名称。例如,当"标签"包含"草莓"时
这个问题接近了,但基本上说您不能使用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"]
}
]}