Shell Script для чтения значений ключей из файла и конвертации в JSON - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть текстовый файл, который содержит пары значений ключей в формате

Var1=Value1
Var2=Value2
Var3=Value3

Я преобразовал их в переменные, используя следующую конструкцию

while read -r line; do declare "$line"; done <inputfile.txt

Мне нужно преобразовать эти переменные или пары ключ / значение в формате json, как показано ниже

[{
    "Key": "Var1",
    "Value": "Value1"
}, {
    "Key": "Var2",
    "Value": "Value2"
}, {
    "Key": "Var3",
    "Value": "Value3"
}]

Как мне выполнить преобразование в JSON формирования переменных или чтение непосредственно из файла без преобразования в переменные в сценарии оболочки ?

Мне нужно сделать его обобщенным c для чтения пар ключ / значение из файла и преобразования в JSON. Затем я бы использовал строку json в команде, поэтому json также должен быть в одной строке. Я просто отформатировал его для удобства чтения, но нужно, чтобы он был

[{"Key": "Var1","Value": "Value1"}, {"Key": "Var2","Value": "Value2"}, {"Key": "Var3","Value": "Value3"}]

Спасибо

1 Ответ

0 голосов
/ 21 апреля 2020

Предупреждение: нигде не используйте этот код . Использование Bash для создания или потребления JSON - это просто плохая идея. Если вы не знаете, почему посмотрите на аналогичный вопрос для HTML. Вы были предупреждены.

С помощью просто alphanumeri c ключей и значений вы можете сделать что-то вроде этого:

printf '['
while IFS='=' read -r key value
do
    printf '{"%s":"%s"},' "$key" "$value"
done < inputfile.txt | sed 's/.$//'
printf ']'
...