在Swagger中使用JSON和YAML有什么实际的区别?

时间:2017-10-28 14:11:08

标签: json yaml swagger

似乎JSON包含路径信息和http请求动词,而YAML似乎只是单独定义树结构。

他们之间有什么区别?或者我在这里混合不同的概念/等级?刚刚开始学习的新手。

如果YAML是JSON的超集,那么这里添加的超集具体是什么 - 它是URL路径和HTTP动词吗?添加example也是YAML为Swagger添加到JSON的东西吗?

3 个答案:

答案 0 :(得分:5)

根据OpenAPI Specification

  

符合OpenAPI规范的OpenAPI文档本身就是一个JSON对象,可以用JSON或YAML格式表示。

因此,在功能方面,使用JSON或YAML没有区别。作为JSON超集的YAML在这里添加的只是一种不同的语法。使用规范中的示例,这两个文档是相同的:

{
  "servers": [
    {
      "url": "https://development.gigantic-server.com/v1",
      "description": "Development server"
    },
    {
      "url": "https://staging.gigantic-server.com/v1",
      "description": "Staging server"
    },
    {
      "url": "https://api.gigantic-server.com/v1",
      "description": "Production server"
    }
  ]
}

servers:
- url: https://development.gigantic-server.com/v1
  description: Development server
- url: https://staging.gigantic-server.com/v1
  description: Staging server
- url: https://api.gigantic-server.com/v1
  description: Production server

第一个文档是有效的JSON和有效的YAML(因为YAML是JSON的超集)。第二个文档是有效的YAML,在结构上与第一个文档相同。

所以回答关于YAML超集在这里添加什么的问题:它为指定相同的结构添加了不同的语法。没什么。

YAML确实包含一些不能映射到JSON的功能,但它们与此无关,因为Swagger / OpenAPI不使用它们。

答案 1 :(得分:5)

JSON不支持注释,而YAML则支持!

答案 2 :(得分:0)

如果从另一个角度来看,YAML比JSON更整洁,更易于读写。