Я хочу знать, как границы, представленные в схеме JSON, преобразуются в класс 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 преобразована в класс pojo с помощью утилиты jsonschema2pojo, как показано ниже -
@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
}
}
Теперь мы не видим, чтобы границы minLength и maxLength были реализованы где-либо в классе pojo.
Мои вопросы: игнорируются ли границы при преобразовании в Java Pojo? Есть ли способ сделать эти границы учтенными в классе pojo?
Кроме того, определение схемы JSON может иметь шаблон для проверки значения узла, например -
{
"type": "object",
"properties": {
"name": {
"type": "string",
"pattern": "^[xX]?[0-9a-fA-F]{32}$"
},
"address": { "$ref": "definations.json#/definitions/address" }
}
}
шаблон игнорируется при преобразовании в класс Java Java? Есть ли способ сделать эти шаблоны учитываемыми в классе Java POJO?