【发布时间】:2018-06-25 01:43:00
【问题描述】:
对于带有以下注解的 Java 代码:
@JsonProperty(value="Contact")
@NotNull(message = "ContactUser or CompanyName is required.")
@Valid
@XmlElements(value = {
@XmlElement(name = "ContactUser", type = ContactUser.class, required = true),
@XmlElement(name = "CompanyName", type = String.class, required = true) })
private Object contactInfo;
当我将对象用于 GET 时的结果集是:
"Contact": {
"ContactUser": {
"Title": "Miss",
"LastName": "Hello"
}
}
或
"Contact": "Hello Company"
有没有办法让它返回:
"ContactUser": {
"Title": "Miss",
"LastName": "Hello"
}
或
"CompanyName": "Hello Company"
相反?在xml中,使用代码,你可以这样做:
<CompanyName>Hello Company</CompanyName>
或
<ContactUser>
<Title>Miss</Title>
<LastName>Hello</LastName>
</ContactUser>
我尝试过使用 JsonTypeInfo,但它似乎无法处理 String.class:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include =JsonTypeInfo.As.WRAPPER_OBJECT, visible=true)
@JsonSubTypes({
@JsonSubTypes.Type(name = "ContactUserJ", value = ContactUser.class),
@JsonSubTypes.Type(name = "CompanyNameJ" , value = String.class)
})
【问题讨论】:
-
Object 类型看起来太笼统了。
-
我认为您想根据填写的信息返回一个或另一个?
-
我认为如果 Object contactInfo 是一个 Map 的实例很容易,如果 ContactUser 或 CompanyName 存在,您可以添加一个条件来放置键和值
标签: java json xml bean-validation