Working with JSON

Yaml to Json

To convert output to json, use the --tojson (or -j) flag. This is supported by all commands. You can change the json output format by using the pretty print or indent flags.

Given a sample.yaml file of:

b:
c: 2

then

yq r -j sample.yaml

will output

{"b":{"c":2}}

To format the json:

yq r --prettyPrint -j sample.yaml

will yield

{
"b": {
"c": 2
}
}

Multiple matches

Each matching yaml node will be converted to json and printed out on a separate line. The prettyPrint and indent flags will still work too.

Given a sample.yaml file of:

bob:
c: 2
bab:
c: 5

then

yq r -j sample.yaml b*

will output

{"c":2}
{"c":5}

Json to Yaml

To read in json, just pass in a json file instead of yaml, it will just work - as json is a subset of yaml. However, you will probably want to pretty print the output to look more like an idiomatic yaml document.

e.g given a json file

{"a":"Easy! as one two three","b":{"c":2,"d":[3,4]}}

then

yq r --prettyPrint sample.json

will output

a: Easy! as one two three
b:
c: 2
d:
- 3
- 4