gpt4 book ai didi

java - swagger-codegen 客户端 : How to include jackson annotations on models

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:51:31 27 4
gpt4 key购买 nike

我正在使用 swagger-codegen 生成一个 rest 客户端,但我遇到了一个问题,我正在使用的服务返回一个具有继承性的模型,API 模型如下所示:

public class Person
{
private List<Book> books;
...
}

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "typeClass")
@JsonSubTypes({ @JsonSubTypes.Type(value = Magazine.class) })
public class Book
{
//some prop
}

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "typeClass")
public class Magazine extends Book
{
//some prop
}

API模型用jackson注解来处理继承。 API 工作正常。当我生成客户端时,客户端模型没有 jackson 注释,所以当我使用生成的客户端来使用 API 时,它总是使用 Book 类反序列化。它不会“看到” Magazine 类。我认为这是因为生成的模型没有处理继承的 jackson 注释。

如何配置 swagger-codegen 以将 jackson 注释添加到模型。

非常感谢...

最佳答案

而不是使用

    java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate 
-i http://petstore.swagger.io/v2/swagger.json
-l java
-o samples/client/petstore/java

你可以一起工作

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate 
-i http://petstore.swagger.io/v2/swagger.json
-l spring
-o samples/client/petstore/java

通过语言的改变,他们还将 gson 换成 Jackson。

在你的情况下你会有类似的东西

import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.model.Category;
import io.swagger.model.Tag;
import java.util.ArrayList;
import java.util.List;
import org.springframework.validation.annotation.Validated;
import javax.validation.Valid;
import javax.validation.constraints.*;

/**
* Pet
*/
@Validated
@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2020-06-04T13:33:18.844+02:00")




public class Pet {
@JsonProperty("id")
private Long id = null;

@JsonProperty("category")
private Category category = null;

@JsonProperty("name")
private String name = null;

@JsonProperty("photoUrls")
@Valid
private List<String> photoUrls = new ArrayList<String>();

@JsonProperty("tags")
@Valid
private List<Tag> tags = null;
...

来源:https://github.com/swagger-api/swagger-codegen/issues/5785

当您使用 Generator.Swagger(https://generator.swagger.io/ 在线 swagger Codegen api:/gen/clients/{language})构建客户端时,您可以查看/gen/clients/{language} 或 https://openapi-generator.tech/docs/generators/java/ 中的设置并构建您的要求到此为止。

关于java - swagger-codegen 客户端 : How to include jackson annotations on models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41616922/

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