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

How to generate JSON examples from OpenAPI 3.0 yaml file?(如何从 OpenAPI 3.0 yaml 文件生成 JSON 示例?)
本文介绍了如何从 OpenAPI 3.0 yaml 文件生成 JSON 示例?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

限时送ChatGPT账号..

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

I have my openapi: 3.0.0 YAML file, I'm looking for a way to generate test data response (JSON object) from schema. This is what I am looking for, but I can't get it working for openapi: 3.0.0, the code works perfectly for "swagger": "2.0" definitions. I have tried to get the code working with Swagger Java libraries 2.x, which support OpenAPI 3.0. I know I need to use version 2.x of Swagger.

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.

This code is working, just need to get the same code working for openapi: 3.0.0.

推荐答案

找到了解决方案,

OpenAPI swagger = new OpenAPIV3Parser().read("url to Open API 3.0 Swagger")
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);

这篇关于如何从 OpenAPI 3.0 yaml 文件生成 JSON 示例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Sending a keyboard event from java to any application (on-screen-keyboard)(将键盘事件从 java 发送到任何应用程序(屏幕键盘))
How to make JComboBox selected item not changed when scrolling through its popuplist using keyboard(使用键盘滚动其弹出列表时如何使 JComboBox 所选项目不更改)
Capturing keystrokes without focus(在没有焦点的情况下捕获击键)
How can I position a layout right above the android on-screen keyboard?(如何将布局放置在 android 屏幕键盘的正上方?)
How to check for key being held down on startup in Java(如何检查在Java中启动时按住的键)
Android - Get keyboard key press(Android - 获取键盘按键)