如何在命令行中将 json 转换为 yaml,反之亦然?
How to convert json to yaml and vice versa in command line?
如何在命令行中将 JSON 文件转换为 YAML,反之亦然?
欢迎任何方式。
我的python方式:
- 创建文件
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')
- 添加执行权限并将文件移动到 bin:
chmod +x yjconverter
sudo mv yjconverter /usr/local/bin/
运行 yjconverter some_file.json
或 yjconverter some_file.yml
利润
使用 yq 版本 4.8.0:
yq e -P file.json
产生 YAML
yq e -j file.yaml
产生 JSON
e
或 eval
分别评估每个文件。 ea
或 eval-all
先合并它们。
-P
或 --prettyPrint
输出 YAML
-j
或 --tojson
输出 JSON
如何在命令行中将 JSON 文件转换为 YAML,反之亦然?
欢迎任何方式。
我的python方式:
- 创建文件
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')
- 添加执行权限并将文件移动到 bin:
chmod +x yjconverter
sudo mv yjconverter /usr/local/bin/
运行
yjconverter some_file.json
或yjconverter some_file.yml
利润
使用 yq 版本 4.8.0:
yq e -P file.json
产生 YAML
yq e -j file.yaml
产生 JSON
e
或eval
分别评估每个文件。ea
或eval-all
先合并它们。-P
或--prettyPrint
输出 YAML-j
或--tojson
输出 JSON