Am trying to do a simple if/then/else using JMESPath
For example: 'if the input is a string, return the string, else return the "value" property of the input'. An input of "abc"
would return "abc"
. An input of {"value":"def"}
would return "def"
With jq
this is easy: if .|type == "string" then . else .value end
With JMESPath, I can get the type
type(@)
or the input:
@
or the value
property:
value
but I have not found a way to combine them into an if-then-else. Is there any way to do this?
It is possible but not cleanly. The general form is to:
This should allow you to also derive possible transformations for both the false and true conditions
For example, if the test data is as so:
Depending on the value you can get either produce the results (using test data 11 and 2 as example):
Like so:
So to abstract a template: