Convert an OpenAPI document
OpenAPI.NET has the ability to convert OpenAPI documents between different formats, such as YAML or JSON. This capability can be useful when you need to share or collaborate on an OpenAPI document with others who prefer a different format.
Here's an example of how you can convert an OpenAPI document from YAML to JSON using OpenAPI.NET.
This example converts the OpenAPI document created and modified in the previous examples from YAML to JSON.
using Microsoft.OpenApi.Readers;
using Microsoft.OpenApi.Writers;
// Load the existing OpenAPI document from a YAML file
using var streamReader = new StreamReader("updated-pet-store.yaml");
var reader = new OpenApiStreamReader();
var document = reader.Read(streamReader.BaseStream, out var diagnostic);
// Serialize and save the OpenAPI document to a JSON file
using var streamWriter = new StreamWriter("updated-pet-store.json");
var writer = new OpenApiJsonWriter(streamWriter);
document.SerializeAsV3(writer);
Console.WriteLine("OpenAPI document converted from YAML to JSON.");
Compare the original YAML with the new JSON.
YAML
openapi: 3.0.1
info:
title: PetStore API
version: 1.0.0
servers:
- url: https://api.petstore.com
paths:
/pets:
get:
description: Get all pets
responses:
'200':
description: A list of pets
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Pet'
/pets/post:
post:
description: Add a new pet
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Pet'
required: true
responses:
'201':
description: Pet created successfully
components:
schemas:
Pet:
type: object
properties:
name:
type: string
category:
type: object
properties:
id:
type: integer
name:
type: string
JSON
{
"openapi": "3.0.1",
"info": {
"title": "PetStore API",
"version": "1.0.0"
},
"servers": [
{
"url": "https://api.petstore.com"
}
],
"paths": {
"/pets": {
"get": {
"description": "Get all pets",
"responses": {
"200": {
"description": "A list of pets",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Pet"
}
}
}
}
}
}
}
},
"/pets/post": {
"post": {
"description": "Add a new pet",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Pet"
}
}
},
"required": true
},
"responses": {
"201": {
"description": "Pet created successfully"
}
}
}
}
},
"components": {
"schemas": {
"Pet": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"category": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
}
}
}
}
}
}
}