Achieving the following conversion using jq. In this conversion, when key2 is true, updated_ is added to the value of key1 and the value of key2 is 2 times and key2a is added by adding updated_ to the value as new property.
Conversion
From
[
{
"key1": "value1",
"key2": 123,
"key3": true
},
{
"key1": "value2",
"key2": 456,
"key3": false
},
{
"key1": "value3",
"key2": 789,
"key3": true
}
]
To
[
{
"key1": "updated_value1",
"key2": 246,
"key2a": "updated_123",
"key3": true
},
{
"key1": "value2",
"key2": 456,
"key3": false
},
{
"key1": "updated_value3",
"key2": 1578,
"key2a": "updated_789",
"key3": true
}
]
Command
$ echo '[{"key1":"value1","key2":123,"key3":true},{"key1":"value2","key2":456,"key3":false},{"key1":"value3","key2":789,"key3":true}]' | jq '[.[] | select(.key3 == true) |= {"key1": ("updated_" + .key1), "key2": (.key2 * 2), "key2a": ("updated_" + (.key2|tostring)), "key3": .key3}]'
Testing
https://jqplay.org/s/RbKiioures