考虑 json 模式:
{
"type":"object",
"$schema":"http://json-schema.org/draft-04/schema",
"required":false,
"properties":{
"inventory":{
"type":"object",
"required":false,
"properties":{
"count":{
"type":"number",
"required":false
}
}
}
}
}
使用 jsonschema2pojo 时,会生成一个对应的 java 对象。从中提取的是以下 count 声明(下面的完整类):
@JsonProperty("count")
private Double count;
package com.test.json;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"count"
})
public class Inventory{
/**
*
*/
@JsonProperty("count")
private Double count;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
/**
*
* @return
* The count
*/
@JsonProperty("count")
public Double getCount() {
return count;
}
/**
*
* @param count
* The count
*/
@JsonProperty("count")
public void setCount(Double count) {
this.arpu = count;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
@Override
public boolean equals(Object other) {
return EqualsBuilder.reflectionEquals(this, other);
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
如果 JSON 接口发生更改,并且 count 变为 countOfItems,则 JSON 属性注释和java 变量名称都会更改,这会影响 getter 和 setter:
@JsonProperty("countOfItems")
private Double countOfItems;
@JsonProperty("countOfItems")
public Double getCountOfItems()
@JsonProperty("countOfItems")
public void setCountOfItems(Double countOfItems)
我希望能够自定义生成的类,以便不必更改实现 java 代码,即:
@JsonProperty("countOfItems")
private Double count;
@JsonProperty("countOfItems")
public Double getCount()
@JsonProperty("countOfItems")
public void setCount(Double count)
使用 JSON 模式和 jsonschema2pojo 是否支持这种功能?我在json 架构或jsonscema2pojo文档中找不到有关如何执行此操作的任何信息。
显然,这可以通过手工制作 java 对象来实现,但我宁愿继续使用生成的类。