How convert JSON file into YAML and vice versa in command line?
Any ways are welcome.
How convert JSON file into YAML and vice versa in command line?
Any ways are welcome.
Update: as of yq version 4.18:
The flags -p
and -o
let you specify input and output formats. You can convert between yaml, json, and xml!
yq -p json -o yaml file.json # json -> yaml
yq -p json -o xml file.json # json -> xml
yq -p yaml -o json file.yaml # yaml -> json
yq -p yaml -o xml file.yaml # yaml -> xml
yq -p xml -o json file.xml # xml -> json
yq -p xml -o yaml file.xml # xml -> yaml
With yq version 4.8.0:
yq e -P file.json
yields YAML
yq e -j file.yaml
yields JSON
e
or eval
evaluates each file separately. ea
or eval-all
merges them first.-P
or --prettyPrint
outputs YAML-j
or --tojson
outputs JSON--indent
is a useful option to define the indent of the output –
Daren My python way:
yjconverter
#!/usr/bin/env python
import json,yaml,sys,os
if len(sys.argv) != 2:
print('Usage:\n '+os.path.basename(__file__)+' /path/file{.json|.yml}')
sys.exit(0)
path = sys.argv[1]
if not os.path.isfile(path):
print('Bad or non-existant file: '+path)
sys.exit(1)
with open(path) as file:
if path.lower().endswith('json'):
print(yaml.dump(json.load(file), Dumper=yaml.CDumper))
elif path.lower().endswith('yaml') or path.lower().endswith('yml'):
print(json.dumps(yaml.load(file, Loader=yaml.SafeLoader), indent=2))
else:
print('Bad file extension. Must be yml or json')
chmod +x yjconverter
sudo mv yjconverter /usr/local/bin/
run yjconverter some_file.json
or yjconverter some_file.yml
profit
Below code help to convert yml to json after installing yq
version 4.44.2
yq -o=json your_file.yml > your_file.json
© 2022 - 2024 — McMap. All rights reserved.
-j
to produce JSON, more recent versions (e.g. 4.27.5) reportFlag --tojson has been deprecated, please use -o=json instead
– Mara