Строка jq to_entries и номер не могут быть добавлены - PullRequest
0 голосов
/ 14 января 2019

Я не понимаю, как to_entries работает в JQ.

У меня есть следующая полезная нагрузка json в payload.json

{"REGION":"us-east-1","EMAIL":"contain","UPDATE":1}

который я хочу преобразовать в = пары ключей с разделителями, вот так;

REGION=us-east-1
EMAIL=contain
UPDATE=1

Я использовал

jq -r 'to_entries | .[] | .key + "=" + .value' < payload.json

Но я получаю ошибку

jq: error (at <stdin>:0): string ("UPDATE=") and number (1) cannot be added

Если я правильно понимаю, проблема в том, что значением обновления является число, а не строка (т. Е. Проблема не в том, чтобы они не совпадали с типами), поэтому я попробовал следующее, оба с одной и той же ошибкой;

string interpolation:
jq -r 'to_entries | .[] | (.key) + "=" + (.value)' < payload.json

tostring:
jq -r 'to_entries | .[] | .key + "=" + .value|tostring' < payload.json

Чего мне не хватает?

1 Ответ

0 голосов
/ 14 января 2019

что мне не хватает?

пара скобок:

.key + "=" + ( .value|tostring )

В качестве альтернативы, вы можете использовать интерполяцию строк, например,

"\(.key)=\(.value)"
...