Я пытаюсь изменить структуру данных стороннего API с помощью JMESPath и не смог выяснить, как взять один объект пар ключ-значение и реструктурировать его в массив объектов, каждый из которых содержит пары ключ-значение.
Я просмотрел все JMESPath документы и примеров , не найдя конкретной структуры данных, с которой я работал. Я пытался использовать встроенные функции keys (@) и 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. Любое мнение эксперта будет с благодарностью.