如何解决无法从Yaml生成示例json值
我正尝试像swagger一样将给定的Yaml解析为JSON示例。我正在使用下面的Yaml。
$id: 'https://example.com/person.schema.json'
$schema: 'http://json-schema.org/draft-07/schema#'
title: Person
type: object
properties:
firstName:
type: string
example:MyName
description: The person's first name.
lastName:
type: string
description: The person's last name.
age:
description: Age in years which must be equal to or greater than zero.
type: integer
minimum: 0
我正在尝试将此Yaml解析为其json,如下所示。如果示例在yaml中给出,则应显示示例,否则应显示默认值。
Person:{
"firstName":"MyName","lastName":"string","age":0
}
但是在解析时出现异常:
com.fasterxml.jackson.core.JsonParseException: Unrecognized token '$id': was expecting ('true','false' or 'null')
at [Source: (String)"$id: 'https://example.com/person.schema.json'
line: 1,column: 4]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1804) ~[jackson-core-2.9.8.jar:2.9.8]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:703) ~[jackson-core-2.9.8.jar:2.9.8]
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._reportInvalidToken(ReaderBasedJsonParser.java:2853) ~[jackson-core-2.9.8.jar:2.9.8]
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddValue(ReaderBasedJsonParser.java:1899) ~[jackson-core-2.9.8.jar:2.9.8]
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:757) ~[jackson-core-2.9.8.jar:2.9.8]
at com.fasterxml.jackson.databind.ObjectMapper._readTreeAndClose(ObjectMapper.java:4042) ~[jackson-databind-2.9.8.jar:2.9.8]
at com.fasterxml.jackson.databind.ObjectMapper.readTree(ObjectMapper.java:2551) ~[jackson-databind-2.9.8.jar:2.9.8]
at io.swagger.parser.SwaggerCompatConverter.readResourceListing(SwaggerCompatConverter.java:210) [swagger-compat-spec-parser-1.0.44.jar:1.0.44]
at io.swagger.parser.SwaggerCompatConverter.read(SwaggerCompatConverter.java:123) [swagger-compat-spec-parser-1.0.44.jar:1.0.44]
at io.swagger.parser.SwaggerCompatConverter.readWithInfo(SwaggerCompatConverter.java:94) [swagger-compat-spec-parser-1.0.44.jar:1.0.44]
at io.swagger.parser.SwaggerParser.readWithInfo(SwaggerParser.java:42) [swagger-parser-1.0.44.jar:1.0.44]
at io.swagger.v3.parser.converter.SwaggerConverter.readLocation(SwaggerConverter.java:92) [swagger-parser-v2-converter-2.0.12.jar:2.0.12]
at io.swagger.v3.parser.OpenAPIV3Parser.read(OpenAPIV3Parser.java:90) [swagger-parser-v3-2.0.12.jar:2.0.12]
at io.swagger.v3.parser.OpenAPIV3Parser.read(OpenAPIV3Parser.java:78) [swagger-parser-v3-2.0.12.jar:2.0.12]
at com.pega.yaml.yamlToJsonExample.App.main(App.java:19) [classes/:na]
Exception in thread "main" java.lang.NullPointerException
at io.swagger.v3.parser.OpenAPIV3Parser.read(OpenAPIV3Parser.java:91)
at io.swagger.v3.parser.OpenAPIV3Parser.read(OpenAPIV3Parser.java:78)
at com.pega.yaml.yamlToJsonExample.App.main(App.java:19)
我正在使用带有以下代码的swagger偏转器2.0.5:
import io.swagger.v3.parser.OpenAPIV3Parser;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.oas.inflector.examples.models.Example;
import io.swagger.oas.inflector.examples.ExampleBuilder;
import java.util.Map;
import com.fasterxml.jackson.databind.module.SimpleModule;
import io.swagger.oas.inflector.processors.JsonNodeExampleSerializer;
import io.swagger.util.Json;
public class App
{
public static void main( String[] args )
{
OpenAPI swagger = new OpenAPIV3Parser().read("Eclipse Workspace1\\yamlToJsonExample\\src\\main\\java\\com\\pega\\yaml\\yamlToJsonExample\\Test.yaml");
Map < String,Schema > definitions = swagger.getComponents().getSchemas();
Schema model = definitions.get("Person");
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);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。