我探索了几种现有的 JSON 查询语言,例如JMESPath、JsonPath和JSONiq。不幸的是,它们似乎都无法以通用的方式支持我的用例。
基本上,我从不同的 Web 服务收到不同类型的响应。我需要让用户能够在二维数组中重新映射响应以利用我们的可视化工具。基于新格式,用户可以决定如何在现有小部件之间显示他的数据。非常类似于完全在 UI 上管理的可定制仪表板。
无论如何,我的输入看起来像:
{
"category_1": [
{
"name": "medium",
"count": 10
},
{
"name": "high",
"count": 20
}
],
"category_2": [
{
"name": "medium",
"count": 30
},
{
"name": "high",
"count": 40
}
]
}
预期输出:
[
{
"name": "medium",
"count": 10,
"category": "1"
},
{
"name": "high",
"count": 20,
"category": "1"
},
{
"name": "medium",
"count": 30,
"category": "2"
},
{
"name": "high",
"count": 40,
"category": "2"
}
]
我越接近 JMESPath,但我的查询根本不是动态的。用户需要了解可能的分组类别。
查询如下所示:[ category_1[].{name: name, count: count, category: '1'}, category_2[].{name: name, count: count, category: '2'} ] | []
换句话说,我需要一个足够强大的 JSON 查询语言来执行这个 JavaScript 代码:
const output = flatMap(input, (value, key) => {
return value.map(x => {
return { ...x, category: key };
});
});
有什么想法吗?