Json из внешнего файла - PullRequest
0 голосов
/ 05 мая 2020

Мне нужно создать файл JSON со следующим содержимым:

{
    "destinationVersion":"4",
    "sourceVersion":"0",
    "props":{
       "METADATA_SIZE":"91669",
       "METADATA_HASH":"O7CLdR2j7qoD0RI2k1AGc8b+xoWYn20Ic24eZ1ZWUWE=",
       "FILE_SIZE":"980374602",
       "FILE_HASH":"+XW4QKN5Y4ynTx43m4NYbMuk1x3P91f1biAVZBpj4fI="
    }
 }

Основная загвоздка с блоком props. Эти значения для props должны быть прочитаны из текстового файла. В нем они представлены в следующем формате:

FILE_HASH=+XW4QKN5Y4ynTx43m4NYbMuk1x3P91f1biAVZBpj4fI=
FILE_SIZE=980374602
METADATA_HASH=O7CLdR2j7qoD0RI2k1AGc8b+xoWYn20Ic24eZ1ZWUWE=
METADATA_SIZE=91669

Моя задача - прочитать файл и каким-то образом создать окончательный JSON (добавить форматированный текст в блок props). Я пытаюсь сделать это через jq, но не знаю, как преобразовать файл для добавления в окончательный JSON. Предпочтительный способ - bash + jq

1 Ответ

0 голосов
/ 05 мая 2020

Так как Q указывает только источник для строк key = value, следующее фокусируется на преобразовании этих строк в объект JSON.

Invocation: jq -n -R -f program. jq props.txt

program.jq:

[inputs | capture("^(?<key>[^=]*)=(?<value>.*)")]
| from_entries

Использование inputs здесь имеет несколько небольших преимуществ, но не является существенным.

...