У меня есть JSON, который выглядит следующим образом.
{ "id": "tjh",
"records": [
{ "name": "number_of_logins",
"shortname": "nol",
"value": 3
},
{ "name": "failed_attempts",
"shortname": "fa",
"value": 4
},
{ "name": "locations",
"shortname": "loc",
"value": 5
}
]}
В формате строк с тысячами записей в файле.Помните об этом, как об ответе, который может работать для одной записи, должен работать для всего файла.
Мне нужно преобразовать его в
ID , name:value,name:value,name:value
ID , name:value,name:value,name:value
ID , name:value,name:value,name:value
Одна строка на каждую запись json вфайл.
Таким образом, в основном одна строка вывода для идентификатора или для каждой записи идентификатора в файле.
Я борюсь со следующим.
Кажется, я могу переформатировать, чтобы получить идентификатор, список значений.Я также могу переформатировать, чтобы получить ID, список имен.
Когда я добавляю оба, я получаю дубликаты.
Вот это на jqplay, https://jqplay.org/s/QTk42jn-a0
Например:
Это близко:
.id , (.records[].name + ":")
Возвращает,
"tjh"
"number_of_logins:"
"failed_attempts:"
"locations:"
Это действительно близко, мне просто нужно добавить значение.
Вот что происходит, когда я добавляю значение:
Фильтр:
.id , (.records[].name + ":" + (.records[].value|tostring))
Вывод:
"tjh"
"number_of_logins:3"
"failed_attempts:3"
"locations:3"
"number_of_logins:4"
"failed_attempts:4"
"locations:4"
"number_of_logins:5"
"failed_attempts:5"
"locations:5"
Это как у меняЯ запускаю полное внешнее соединение как-то.
Я подозреваю, что мне может понадобиться уменьшение или карта.
Любой совет приветствуется, интерактивный URL-адрес веб-сайта для тестирования jq, с моим фрагментом здесь.
https://jqplay.org/s/QTk42jn-a0
Спасибо,
Том