当前位置: 首页 > 知识库问答 >
问题:

使用ZoneId和jackson-datatype-jsr310时,Swagger UI显示嵌套的模型对象

慕光霁
2023-03-14

我正在用spring、springfox、jackson开发一个REST API,我的model类包含一个ZoneID属性:

@JsonProperty
private ZoneId timeZone;

我在依赖项中包含了jackson-datatype-jsr310版本2.9.0.pr4,因此它的序列化和反序列化很好。但是我的swagger-ui现在显示了很多模型对象,比如zoneIDzoneoffsetzoneoffsettransition等等,这非常混乱,因为zone ID是序列化为简单字符串的。生成的API规范中的情况相同。我如何防止大摇大摆地公开这些(未使用的)模型对象?

共有1个答案

柴晔
2023-03-14

您可以尝试@apimodelproperty数据类型设置为字符串:

@JsonProperty
@ApiModelProperty(dataType = "string")
private ZoneId timeZone;

如果数据类型被忽略,则可以使用docket:

@Bean
public Docket configureDocket() {
    return new Docket(DocumentationType.SWAGGER_2)
            .directModelSubstitute(ZoneId .class, String.class);
}
 类似资料:
  • 我正在尝试配置Java 8 使用ContextResolver的原因是我需要格式化java。时间LocalDateTime转换为JSON。 我首先通过添加@JsonFormat在我的模型bean上尝试注释, 并得到以下错误: Java语言lang.NoSuchMethodError:com。fasterxml。杰克逊。数据类型。jsr310.ser。JSR310格式化序列化数据库。findForm

  • 我将spring boot与thymeleaf结合使用,在页面中尝试显示表单及其嵌套对象。 我的对象工厂有 id 当我显示时 我的工厂有很多机器,但没有一台展出 任何想法?

  • 我对对象接口的jackson序列化有问题。 我有课 哪个实现 还有上课 哪个实现 上课 我要和Jackson连载Container得到结果 但事实上我得到了结果 尽管我在映射中指定了点的序列化类型(),但在嵌套对象“point”中具有属性“name”。接口点视图没有方法getName,但结果中存在点的字段“name”。 若我从类容器中的方法getMap中删除注释(),我将得到结果 现在点没有属性"

  • 我正在尝试反序列化一个 JSON 响应,其中包含一些标准字段和一个包含子类属性的 嵌套对象,例如: 字段< code>id和< code>type是标准的,所以我有一个基类< code>Base,然后扩展一些更具体的类: 如何让杰克逊读取 对象作为进一步字段值的来源?我假设我需要创建一个自定义反序列化程序,但我不确定如何具体完成此操作。

  • 下面有一个实体类,有两个字符串字段:name和description。description字段将包含一个原始JSON值,例如{“abc”:123} 如果存在@JSONRAWValue注释,建议如何将创建的JSON字符串编组回to Entity对象?我是不是遗漏了另一个注释? 谢谢