有没有一种快速的方法可以将一堆YAML文件转换成JSON文件。我查看了yaml2json,但它无法工作(抛出了一些异常)
谢谢
因为最新版本的yq没有答案(除了评论中),所以添加答案。
brew install yq
yq -j eval test.yaml
或者,使用更新的语法:
yq -o=json eval test.yml
yq -o=json eval test.yml
。 - danlei请使用来自https://github.com/mikefarah/yq的真正yq(而不是python yq)
brew reinstall yq
然后运行:
/usr/local/bin/yq eval deployment.yaml -o=json -P > deployment.json
参数含义,来自于--help
:
-P, --prettyPrint pretty print, shorthand for '... style = ""'
-o, --output-format string [yaml|y|json|j|props|p|xml|x] output format type. (default "yaml")
r
对我没用,最近的 yq
版本不应该是 eval
吗? - cubuspl42yq version 4.7.1
,是的,应该使用 eval
,而这个版本没有 r
的命令行标志/选项。 - kiran01bmmikefarah/yq
经历了许多不兼容的 cli 用法/标志更改,我因此受挫而放弃了它。自从使用 JQ 包装器,例如 Blacksmoke16/oq 或 kislyuk/yq(Python pip)以来,一切都非常成功,因为它们只是将其转换为 JSON 并将所有处理传递给 JQ。 - anapsixpython -c 'import yaml; import json; import sys; print(json.dumps(yaml.safe_load(sys.stdin)));'
使用当前版本的 yq
(v4.24.5):
yq eval -o json my.yaml > my.json
请注意,从 4.18.1
开始,当未提供命令时,eval
是默认命令,这意味着这也完全可以正常工作。
yq -o json my.yaml > my.json
安装 yq,yaml2json 在 Mac 上无法工作
brew install yq
然后使用它:
yq -o=json test-env.yml > test-env.json
这里的 test-env.json 是输出文件
jconvyamljson(){
if [[ ! -f $1 ]]; then
>&2 echo need to provide an existing file to convert
exit 1
fi
cat $1 | python -c 'import yaml; import json; import sys; print(json.dumps(yaml.safe_load(sys.stdin)));'
}
jconvyamljson directive.Usergroup_list.yaml | jq .cssc_table
"table table-striped table-bordered table-condensed"
jconvyamljson this-file-doesnt-exist | jq .cssc_table
need to provide an existing file to convert