Mac OS X将YAML转换为JSON

46scxncf  于 12个月前  发布在  Mac
关注(0)|答案(6)|浏览(121)

有没有一个快速的方法来转换一堆yaml文件到json文件。我看了yaml2json,它不工作(抛出一些异常)
谢谢

uoifb46i

uoifb46i1#

添加答案,因为最新版本的yq没有答案(除了评论中)。

brew install yq

yq -j eval test.yaml

或者,更新的语法:

yq -o=json eval test.yml
tjvv9vkg

tjvv9vkg2#

使用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")
fcy6dtqo

fcy6dtqo3#

你可以将你的YAML管道到这个(需要安装pyYAML)

python -c 'import yaml; import json; import sys; print(json.dumps(yaml.safe_load(sys.stdin)));'
ycggw6v2

ycggw6v24#

使用当前版本的yq(v4.24.5):
yq eval -o json my.yaml > my.json
请注意,(对于4.18.1eval是默认命令,当没有为yq提供任何命令时,这意味着这也可以正常工作。
yq -o json my.yaml > my.json

v64noz0r

v64noz0r5#

安装yq,yaml 2 json不会为mac工作

brew install yq

然后使用它:

yq -o=json test-env.yml > test-env.json

这里test-env.json是输出文件

yyhrrdl8

yyhrrdl86#

要在Andrew's answer上即兴发挥,如果你有Python和PyYaml,那么你可以定义一个快速的bash/zsh(是的,它在两个上都有效)函数:

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)));' 
}

使用就像这样简单:
如果需要的话,通过管道连接到yaml进行格式化/处理

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

相关问题