1

考虑 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 对象来实现,但我宁愿继续使用生成的类。

4

0 回答 0