如何在命令行中将 json 转换为 yaml,反之亦然?

How to convert json to yaml and vice versa in command line?

如何在命令行中将 JSON 文件转换为 YAML,反之亦然?

欢迎任何方式。

我的python方式:

  1. 创建文件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')
  1. 添加执行权限并将文件移动到 bin:
chmod +x yjconverter
sudo mv yjconverter /usr/local/bin/
  1. 运行 yjconverter some_file.jsonyjconverter some_file.yml

  2. 利润

使用 yq 版本 4.8.0:

yq e -P file.json 产生 YAML

yq e -j file.yaml 产生 JSON

  • eeval 分别评估每个文件。 eaeval-all 先合并它们。
  • -P--prettyPrint 输出 YAML
  • -j--tojson 输出 JSON