我想知道,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类中?
minLength / maxLength的值应用双引号引起来。
请参阅文档中提供的示例以获取默认值: { "type":"integer", "default":"100"}
对于模式情况,请检查Maven插件,CLI和Ant任务的可用性,这些任务允许通过config参数激活JSR-303批注。
激活后,将生成以下JSR-303注释:
模式规则注释最大@DecimalMax最小@DecimalMin minItems,maxItems @Size minLength,maxLength @Size模式@Pattern ...
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。