Я хочу изменить структуру данных стороннего API с помощью JMESPath и не смог понять, как взять один объект пар ключ-значение и преобразовать его в массив объектов, каждый из которых содержит ключ-значение. пары.
Я просмотрел все документы JMESPath и examples, не обнаружив конкретной структуры данных, с которой я работал. Я пробовал использовать клавиши (@) и values (@) встроенные функции для получения ключа и значений эти пары, но не смогли объединить их в единый массив.
Вот мои исходные данные JSON
{
"time": 32,
"terms": {
"192.168.10.121": 84,
"154.223.10.121": 12,
"112.149.10.121": 6
}
}
Я пытаюсь преобразовать указанные выше данные JSON в следующую структуру с помощью JMESPath.
{
"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. Приветствуются любые мнения экспертов.