背景:
通过eclipse的jaxb根据xsd文件生成了对应的pojo类,然后需要根据pojo生成对应的json文件。 由于xsd定义的标签都是大写,要求最后生成的json文件保持key一致大写。
问题在于自动生成的pojo均以小写作为属性,因此默认转换后的json key为小写。要保持原来xml一致必须标注json的注解。
面临问题
生成的类非常多,每个属性手动加json注解,工作量超级庞大而且容易出错疏漏。
解决方案
由于pojo是由xsd自动生成的带了jaxb规范的xml属性注解,因此想到的方法是正则表达式搜索替换xml属性注解。
以下为需要搜索替换的字符串正则表达式。
@XmlElement\(name = "(\w+)", required = true\)
@XmlElement\(name = "$1", required = true\)\n @JsonProperty("$1")
@XmlElement\(name = "(\w+)"\)
@XmlElement\(name = "$1"\)\n @JsonProperty("$1")
@XmlValue
@XmlValue\n @JsonProperty("VALUE")
@XmlAttribute\(name = "(\w+)"\)
@XmlAttribute(name = "$1")\n @JsonProperty("$1")
@XmlAttribute\(name = "(\w+)", required = true\)
@XmlAttribute\(name = "$1", required = true\)\n @JsonProperty("$1")
最后每个java文件导入package
import com.fasterxml.jackson.annotation.JsonProperty;