java - 如何从 OpenAPI 3.0 yaml 文件生成 JSON 示例?

标签 java json yaml swagger openapi

我有我的 openapi: 3.0.0 YAML 文件,我正在寻找一种从模式生成测试数据响应(JSON 对象)的方法。 This是我正在寻找的,但我无法让它为 openapi: 3.0.0 工作,该代码非常适合 "swagger": "2.0"定义。 我试图让代码与支持 OpenAPI 3.0 的 Swagger Java 库 2.x 一起使用。我知道我需要使用 Swagger 的 2.x 版。

import io.swagger.parser.SwaggerParser;
import io.swagger.models.*;
import io.swagger.inflector.examples.*;
import io.swagger.inflector.examples.models.Example;
import io.swagger.inflector.processors.JsonNodeExampleSerializer;
import io.swagger.util.Json;
import io.swagger.util.Yaml;
import java.util.Map;
import com.fasterxml.jackson.databind.module.SimpleModule;


// Load your OpenAPI/Swagger definition
Swagger swagger = new SwaggerParser().read("http://petstore.swagger.io/v2/swagger.json");

// Create an Example object for the Pet model
Map<String, Model> definitions = swagger.getDefinitions();
Model pet = definitions.get("Pet");
Example example = ExampleBuilder.fromModel("Pet", pet, definitions, new HashSet<String>());
// Another way:
// Example example = ExampleBuilder.fromProperty(new RefProperty("Pet"), swagger.getDefinitions());

// Configure example serializers
SimpleModule simpleModule = new SimpleModule().addSerializer(new JsonNodeExampleSerializer());
Json.mapper().registerModule(simpleModule);

// Convert the Example object to string

// JSON example
String jsonExample = Json.pretty(example);
System.out.println(jsonExample);

此代码有效,只需要让相同的代码适用于 openapi:3.0.0。

最佳答案

import io.swagger.v3.parser.OpenAPIV3Parser;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.oas.inflector.examples.models.Example;
import io.swagger.oas.inflector.examples.ExampleBuilder;
import com.fasterxml.jackson.databind.module.SimpleModule;
import io.swagger.oas.inflector.processors.JsonNodeExampleSerializer;
import io.swagger.util.Json;

OpenAPI swagger = new OpenAPIV3Parser().read("C:\\Users\\ABC\\Downloads\\Petstore-1.0.yaml")
Map<String, Schema> definitions = swagger.getComponents().getSchemas();
Schema model = definitions.get("Pet");
Example example = ExampleBuilder.fromSchema(model, definitions);
SimpleModule simpleModule = new SimpleModule().addSerializer(new JsonNodeExampleSerializer());
Json.mapper().registerModule(simpleModule);
String jsonExample = Json.pretty(example);
System.out.println(jsonExample);

对 swagger 变形器的依赖

compile group: 'io.swagger', name: 'swagger-inflector', version: '2.0.0'

关于java - 如何从 OpenAPI 3.0 yaml 文件生成 JSON 示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55978052/

相关文章:

java - IDEA 中的调试功能被禁用

java - 从内部存储器读取数据

azure - 位桶上的多个部署管道

syntax - 如何正确拥有多行 yaml 字符串?

symfony - JMS Serializer 忽略了我的 YML 实体排除项

java - 从 Base64 编码的字符串中检索 MIME 类型

java - 如何在 java swing 中以线程安全的方式初始化 gui 对象?

javascript - 将 Typescript Map<string, string> 转换为 json 字符串表示

javascript - 无法在页面上显示 JSON

java - 如何访问 POST 正文中发送的转换后的 JSON 对象的字段?