gpt4 book ai didi

java - 如何使用 codehaus 包类从 POJO 生成 JSON 架构时添加描述属性

转载 作者:太空宇宙 更新时间:2023-11-04 09:19:09 26 4
gpt4 key购买 nike

我打算将我的 POJO 转换为 JSON 架构

在现有的 POJO 中,我们有来自 codehaus 包的注释:@JsonProperty("address") 其中相应的导入是:

import org.codehaus.jackson.annotate.JsonProperty;

我无法使用 codehaus api 生成架构,因为我们有递归 JSON 结构,并且我收到 StackOverflowError

因此,我尝试使用 fasterxmljackson-module-jsonschema API 来执行此操作,效果很好。

我得到的示例输出:

"Registration" : {
"type" : "object",
"id" : "urn:jsonschema:com:xyz.abc.Address",
}

我有两个要求:

  • 除了“type”和“id”之外,我还想要一个描述属性。我可以添加 @JsonPropertyDescription 属性,这可以工作,但每个属性都会有一个来自 codehaus 的注释和另一个来自 fasterxml 包的注释。 codehaus 中是否有等效的注释可用于此目的?

  • 是否有办法在“id”属性中仅包含非限定类名(仅“Address”,即没有限定对象路径“xyz.abc.Address”且没有“urn:jsonschema”)?

使用fasterxml生成模式的代码:

ObjectMapper mapper = new ObjectMapper();
JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper);
JsonSchema schema = schemaGen.generateSchema(DashboardDef.class);
String generatedJsonSchema = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema);

最佳答案

如果可能的话,只需将 codehaus 注释替换为 fasterxml 即可。 codehaus 不再受支持,应避免使用。欲了解更多信息,请查看:org.codehaus.jackson versus com.fasterxml.jackson.core .

如果你真的想深入研究这两个库的项目,你应该看看 AnnotationIntrospector类,它允许额外的配置并将许多不同的库与 Jackson 框架链接起来。查看类似问题:How to make fasterxml ObjectMapper work with codehaus annotations .

要操作 JSON 架构,您可以实现自己的 SchemaFactoryWrapper 。另请参阅:

PS:我知道这不是理想的答案(它不包含直接的解决方案),但我想向您指出一些您应该从解决问题开始的主题,而评论对此来说太小了。

关于java - 如何使用 codehaus 包类从 POJO 生成 JSON 架构时添加描述属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58564748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com