开发者社区> 问答> 正文

jsonchema2pojo:如何在生成的Java Pojo类上应用minLength、maxLen

我想知道,JSON模式中提供的 bounds 如何转换为Java POJO类?

例如,下面是definitions.json文件的内容-

{ "definitions": {

"address": {
    "type": "object",
    "properties": {
        "street": { "type": "string", "minLength" : 30, "maxLength" : 100 },
        "city": { "type": "string", "minLength" : 30, "maxLength" : 100 },
        "state": { "type": "string", "minLength" : 30, "maxLength" : 100  }
    }

}

} } 上面的json模式使用jsonschema2pojo实用工具转换为pojo类,如下所示-

@JsonInclude(JsonInclude.Include.NON_NULL) @Generated("org.jsonschema2pojo") @JsonPropertyOrder({ "street", "city", "state" }) public class Address {

@JsonProperty("street")
private String street;
@JsonProperty("city")
private String city;
@JsonProperty("state")
private String state;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

/**
 * 
 * @return
 *     The street
 */
@JsonProperty("street")
public String getStreet() {
    return street;
}

/**
 * 
 * @param street
 *     The street
 */
@JsonProperty("street")
public void setStreet(String street) {
    this.street = street;
}

/**
 * 
 * @return
 *     The city
 */
@JsonProperty("city")
public String getCity() {
    return city;
}

/**
 * 
 * @param city
 *     The city
 */
@JsonProperty("city")
public void setCity(String city) {
    this.city = city;
}

/**
 * 
 * @return
 *     The state
 */
@JsonProperty("state")
public String getState() {
    return state;
}

/**
 * 
 * @param state
 *     The state
 */
@JsonProperty("state")
public void setState(String state) {
    this.state = state;
}

@Override
public String toString() {
    return ToStringBuilder.reflectionToString(this);
}

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
    return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
    this.additionalProperties.put(name, value);
}

@Override
public int hashCode() {
    ..... Generated implementation
}

@Override
public boolean equals(Object other) {
    .....Generated Implementation
}

} 现在,在pojo类中的任何地方都没有实现minLength和maxLength bounds 。

我的问题是,转换为Java Pojo时会忽略 bounds 吗?有什么办法可以让这些界限进入pojo类吗?

另外,JSON模式定义可以具有用于验证节点值的模式,例如-

{
"type": "object",
"properties": {
    "name": {
    "type": "string",
    "pattern": "^[xX]?[0-9a-fA-F]{32}$"
    },
    "address": { "$ref": "definations.json#/definitions/address" }

}

} 转换为Java Pojo类时是否会忽略该模式?有什么办法可以将这些模式记入Java POJO类中?

展开
收起
小六码奴 2019-10-09 18:53:11 1014 0
1 条回答
写回答
取消 提交回答
  • minLength / maxLength的值应用双引号引起来。

    请参阅文档中提供的示例以获取默认值: { "type":"integer", "default":"100"}

    对于模式情况,请检查Maven插件,CLI和Ant任务的可用性,这些任务允许通过config参数激活JSR-303批注。

    激活后,将生成以下JSR-303注释:

    模式规则注释最大@DecimalMax最小@DecimalMin minItems,maxItems @Size minLength,maxLength @Size模式@Pattern ...

    2019-10-09 18:54:29
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载