Java 自定义@JsonProperty注释
考虑json模式:Java 自定义@JsonProperty注释,java,json,jackson,jsonschema,jsonschema2pojo,Java,Json,Jackson,Jsonschema,Jsonschema2pojo,考虑json模式: { "type":"object", "$schema":"http://json-schema.org/draft-04/schema", "required":false, "properties":{ "inventory":{ "type":"object", "required":false, "properties":{
{
"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对象。从中提取以下计数声明(下面是完整类):
package com.test.json;
导入java.util.HashMap;
导入java.util.Map;
导入javax.annotation.Generated;
导入com.fasterxml.jackson.annotation.JsonAnyGetter;
导入com.fasterxml.jackson.annotation.JsonAnySetter;
导入com.fasterxml.jackson.annotation.JsonIgnore;
导入com.fasterxml.jackson.annotation.JsonInclude;
导入com.fasterxml.jackson.annotation.JsonProperty;
导入com.fasterxml.jackson.annotation.JsonPropertyOrder;
导入org.apache.commons.lang.builder.EqualsBuilder;
导入org.apache.commons.lang.builder.HashCodeBuilder;
导入org.apache.commons.lang.builder.ToStringBuilder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@生成(“org.jsonschema2pojo”)
@JsonPropertyOrder({
“计数”
})
公共类目录{
/**
*
*/
@JsonProperty(“计数”)
私人重复计数;
@杰索尼奥雷
私有映射additionalProperties=new HashMap();
/**
*
*@返回
*伯爵
*/
@JsonProperty(“计数”)
公共双精度getCount(){
返回计数;
}
/**
*
*@param计数
*伯爵
*/
@JsonProperty(“计数”)
公共无效设置计数(双重计数){
这个.arpu=计数;
}
@凌驾
公共字符串toString(){
返回到stringbuilder.reflectionString(this);
}
@凌驾
公共int hashCode(){
返回HashCodeBuilder.reflectionHashCode(this);
}
@凌驾
公共布尔等于(对象其他){
返回EqualsBuilder.reflectionEquals(此,其他);
}
@JsonAnyGetter
公共映射getAdditionalProperties(){
返回此。附加属性;
}
@JSONANYSETER
public void setAdditionalProperty(字符串名称、对象值){
this.additionalProperties.put(名称、值);
}
}
这与jsonschema无关。Json模式没有指定如何在编程语言中创建类型。关于您的问题,我看到的唯一可能的解决方案是只生成一次POJO,然后在发生此更改时手动更改映射到模式。我怀疑是否存在一个通用的解决方案(事实上,在这个类型生成中使用json模式是非常有限的)。
@JsonProperty("count")
private Double count;