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. Note that due to the implementation of the JSON marshaller in GO, object keys will be sorted on output (https://golang.org/pkg/encoding/json/#Marshal).
Given a sample.yaml file of:
b:
c: 2then
yq r -j sample.yamlwill output
{"b":{"c":2}}To format the json:
yq r --prettyPrint -j sample.yamlwill 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: 5then
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.jsonwill output
a: Easy! as one two three
b:
c: 2
d:
- 3
- 4Last updated
Was this helpful?