我已经尝试过使用Swagger JaxRs当前的主1.0和Swagger 2.0的devel_2.0分支。
@ApiModel(value = "Animal",
subTypes = {Dog.class, Lion.class},
discriminator = "type")
public class Animal {
@ApiModelProperty(value = "the discriminator field.")
private String type;
这是其中一个子类,
@ApiModel(value = "Lion", parent = Animal.class)
public class Lion {
@ApiModelProperty(value = "the discriminator field.")
private String type;
我还没有找到任何可以预期的例子,但这是我当前的Swagger 2.0项目swagger.json文件中的输出。
"definitions":{
"Animal":{
"properties":{
"type":{
"type":"string",
"description":"the discriminator field."
}
},
"discriminator":"type"
},
根据定义,没有狗或狮子对象的迹象。请求对象中没有任何内容。我不确定如果它有效会是什么样子,但如果你知道它应该如何工作,请告诉我。
如果您想查看完整的上下文,所有代码都在此处。
https://github.com/javatestcase/RestEasy/tree/RestEasyVersion2
答案 0 :(得分:4)
你的例子给了我很多帮助,所以我认为我应该帮助你,因为我现在就开始工作了!
您需要告诉序列化/反序列化如何绑定实现:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME, // Were binding by providing a name
include = JsonTypeInfo.As.PROPERTY, // The name is provided in a property
property = "type", // Property name is type
visible = true // Retain the value of type after deserialisation
)
@JsonSubTypes({//Below, we define the names and the binding classes.
@JsonSubTypes.Type(value = Lion.class, name = "Lion"),
@JsonSubTypes.Type(value = Dog.class, name = "Dog")
})
@ApiModel(value = "Animal", subTypes = {Dog.class, Lion.class}, discriminator = "type")
public class Animal {