【发布时间】:2019-06-09 03:30:33
【问题描述】:
我正在寻找使用 JMESPath 更改第 3 方 API 的数据结构,但无法弄清楚如何获取键值对的单个对象并将其重组为对象数组,每个对象包含键值对。
我浏览了所有JMESPath docs 和examples 却没有找到我一直在使用的特定数据结构。我尝试使用 keys(@) 和 values(@) 内置函数来获取这些对的键和值,但无法将它们连接到一个数组中。
这是我的原始 JSON 数据
{
"time": 32,
"terms": {
"192.168.10.121": 84,
"154.223.10.121": 12,
"112.149.10.121": 6
}
}
我正在尝试使用 JMESPath 将上述 JSON 数据转换为以下结构。
{
"data": [
{ "ip_address": "192.168.10.121", "count": 84 },
{ "ip_address": "154.223.10.121", "count": 12 },
{ "ip_address": "112.149.10.121", "count": 6 }
]}
我已经能够创建键数组或值数组,但无法创建包含键值对的对象数组。
terms.{ data: keys(@)}
terms.{ data: values(@)}
使用terms.{ data: keys(@)}时的结果
{
"data": [
"192.168.10.121",
"154.223.10.121",
"112.149.10.121"
]}
使用terms.{ data: values(@)}时的结果
{
"data": [
84,
12,
6
]}
这两个函数似乎是我可以用来从包含键值对的对象中提取键和值的唯一函数,该对象包含最初不在数组中的键值对。据我所知,我无法像上面的示例那样将这两个函数结合起来输出单个数组。
我什至不确定这是否可以使用 JMESPath。任何专家意见将不胜感激。
【问题讨论】:
标签: json normalization jmespath