jq to_entries字符串和数字不能添加

时间:2019-01-14 15:13:03

标签: json jq

我不了解to_entries在jq中的工作方式。

我在payload.json

中具有以下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 :(得分:2)

  

我想念什么?

一对括号:

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

或者,您可以使用字符串插值,例如

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