json
Parse variables from a JSON file or from a variable (for example, RESULT_STDOUT
) that contains a valid JSON string.
If the “local_path” option is used, the JSON is read directly from the specified file. The “cmd” option is optional. If “local_path” is defined, the “cmd” option will be ignored.
If no “local_path” is set, the JSON is read from the “cmd” option. The variables are recursively parsed from the JSON input and saved in the variable store.
The variables are recursively parsed from the json input and are saved as single variables in the variable store.
Variable names are generated by concatenating keys at each level using an underscore (_) as a separator.
If the lowest-level value is a list of primitives (e.g., strings, integers), the list is preserved as-is without further flattening.
Example
Given the following JSON input:
{
"first_list": [1, 2, 3],
"user": {
"name": "John Doe",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York",
"postal_codes": [10001, 10002]
},
"friends": [
{
"name": "Jane Smith",
"age": 28,
"address": {
"street": "456 Oak Rd",
"city": "Los Angeles",
"postal_codes": [90001, 90002]
}
},
{
"name": "Emily Davis",
"age": 35,
"address": {
"street": "789 Pine Ln",
"city": "Chicago",
"postal_codes": [60007, 60008]
}
}
]
}
}
The variables would be saved in the variable store as follows:
first_list: [1, 2, 3]
user_name: "John Doe"
user_age: 30
user_address_street: "123 Main St"
user_address_city: "New York"
user_address_postal_codes: [10001, 10002, 10003]
user_friends_0_name: "Jane Smith"
user_friends_0_age: 28
user_friends_0_address_street: "456 Oak Rd"
user_friends_0_address_city: "Los Angeles"
user_friends_0_address_postal_codes: [90001, 90002]
user_friends_1_name: "Emily Davis"
user_friends_1_age: 35
user_friends_1_address_street: "789 Pine Ln"
user_friends_1_address_city: "Chicago"
user_friends_1_address_postal_codes: [60007, 60008]
Configuration
- local_path
The JSON input to parse from. Valid input is a path to a JSON file. If “local_path” is set, the “cmd” option will be ignored.
- Type:
str
- Required:
False
- cmd
The JSON input to parse from. Valid input is a variable name from the variable store (without the leading
$
) that contains a valid JSON string.- Type:
str
- Required:
False
Either
local_path
ORcmd
is required.
- varstore
If set to
True
, logs the variable store before and after adding variables using the JSON command.- Type:
bool
- Required:
False
Examples
commands:
- type: json
local_path: "/path/to/samplefile.json"
varstore: True
- type: shell
cmd: |
cat <<EOF
{
"name": "Whiskers",
"favorite_toys": ["ball", "feather", "laser pointer"]
}
EOF
- type: json
cmd: RESULT_STDOUT
use_var: True