当前位置:  开发笔记 > 编程语言 > 正文

从命令行将Swagger YAML文件转换为JSON

如何解决《从命令行将SwaggerYAML文件转换为JSON》经验,为你挑选了5个好方法。

我想将Swagger YAML文件JSON从命令行转换为.计划是在CI作业期间使用此命令行.我在google上搜索并找到了很多解决方案,但大多数都使用Python或Ruby,我不想使用它.例如:http://www.commandlinefu.com/commands/view/12218/convert-yaml-to-json

我想做到这一点,而无需使用Python或Ruby,我也希望能够格式化JSON精确匹配JSON是从扬鞭的输出时控制的前导空格editor.swagger.io编辑器,你什么时候选择File- >Download JSON

所有这些意味着我希望空格填充为四个空格,如下所示:

{
    "swagger": "2.0",
    "info": {
        "title": "API TITLE",

我没有在上面的链接中尝试过Python方法,但Ruby方法使用了两个空格空格填充.也许有一种方法可以控制它,但我不想在这个解决方案中使用Ruby或Python.

我确信这个问题有很多"正确"的答案.我正在寻找最优雅,最少依赖的解决方案.理想情况下,生成的JSON文件与editor.swagger.io生成的JSON文件的差异应为空.



1> Liel..:

我认为你正在寻找swagger-codegen功能:

运行

swagger-codegen generate -i swagger.yaml -l swagger

将把swagger.json放在同一个位置.

更新CI: 如果您可以在您的构建计算机上安装它 - 对您有好处.如果你不能 - github页面有一个到达docker图像的链接,nodejs服务器可用(使用curl命令进行转换,如另一个答案所示).



2> mkrufky..:

使用yamljs:

yaml2json swagger.yaml -p -i4

该命令的输出与editor.swagger.io的JSON输出进行差异比较会产生一个空的差异。

这确实是我要寻找的,但是它带来了巨大的依赖关系(节点)。我希望找到更轻巧但同样优雅的东西。


这种方式有一个严重的“弊端”:跨文件关系不被翻译。例如:`$ ref:'Pet.yaml'`应该被翻译成`$ ref:'Pet.json'`

3> fehguy..:

您可以使用在线swagger codegen项目来执行此操作:

curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d "{
  \"spec\": {}
}" "https://generator.swagger.io/api/gen/clients/swagger-yaml"

将swagger定义的值放在spec对象中.您将获得一个链接,以yaml格式下载已转换和验证的规范.

有关选项,请查看此处:

http://generator.swagger.io/


发电机现在不支持它,但它可以.我已经打开了这个问题,您可以跟踪进度:https://github.com/swagger-api/swagger-codegen/issues/1903

4> ckeeney..:

swagger-codegen cli接口

正如Liel已经指出的那样,您可以运行

swagger-codegen generate -i swagger.yaml -l swagger

码头工人

如果您使用Docker,则建议您尝试swaggerapi / swagger-codegen-cli。

您可以通过以下命令使用docker生成json文件:

docker run -v ./docs:/docs swaggerapi/swagger-codegen-cli generate -i /docs/swagger.yaml -l swagger -o /docs

我喜欢设置一个docker-compose.yml“别名”此命令以方便重用:

version: "2"
services:
  gen-swagger:
    volumes:
      - ./docs:/docs
    image: swaggerapi/swagger-codegen-cli
    command: generate -i /docs/swagger.yaml -l swagger -o /docs

现在我可以跑步 docker-compose run gen-swagger



5> kuzdu..:

对于版本swagger-codegen 3.0.4

使用

swagger-codegen generate -i my_yaml.yaml -l openapi

得到一个.json

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有