우리는 maven plugin maven-jaxb2-plugin을 사용하여 xsd에서 JAXB 객체를 생성하고 있습니다. 0.6.2
JAXB2 - 기본 - 주석 - - 아래는annox 플러그인을 사용하여 @JsonSerialize에 include = JsonSerialize.Inclusion.NON_NULL을 추가하는 방법
JAXB2 - 기본이 종속 우리의 받는다는 파일에서 0.6.2
, 우리는 또한 -Xannotate 및
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<executions>
<execution>
<id>exec1</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaDirectory>${basedir}/src/main/resources/xsd</schemaDirectory>
<bindingDirectory>${basedir}/src/main/resources/xsd</bindingDirectory>
<generatePackage>org.learning.json.generated</generatePackage>
<generateDirectory>${basedir}/generated</generateDirectory>
<clearOutputDir>false</clearOutputDir>
<includeSchemas>
<includeSchema>Person.xsd</includeSchema>
</includeSchemas>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.6.2</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.2</version>
</plugin>
</plugins>
<args>
<arg>-Xannotate</arg>
<arg>-XtoString</arg>
</args>
</configuration>
</execution>
을 -XtoString 포함
바인딩 파일이 @JsonSerialize를 추가했다
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:annox="http://annox.dev.java.net"
jaxb:extensionBindingPrefixes="xjc annox"
jaxb:version="2.0">
<jaxb:bindings schemaLocation="Person.xsd" multiple="true">
<jaxb:bindings node="xs:complexType[@name='personType']/xs:sequence/xs:element[@type='xs:date']" multiple="true">
<annox:annotate>
<annox:annotate target="getter" annox:class="org.codehaus.jackson.map.annotate.JsonSerialize"
using="org.learning.json.JsonDateSerializer"/>
</annox:annotate>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
다음과 같다 (JsonDateSerializer.class = 사용). 하지만 이 = JsonSerialize.Inclusion.NON_NULL을 포함하는 추가 아래와 같은 몇 가지 옵션을 시도했지만
<annox:annotate>
<annox:annotate target="getter" annox:class="org.codehaus.jackson.map.annotate.JsonSerialize"
using="org.learning.json.JsonDateSerializer"
include="org.codehause.jackson.map.annotate.JsonSerialize.Inclusion.NON_NULL"/>
</annox:annotate>
<annox:annotate>
<annox:annotate target="getter" annox:class="org.codehaus.jackson.map.annotate.JsonSerialize"
using="org.learning.json.JsonDateSerializer"
include="org.codehause.jackson.map.annotate.JsonSerialize$Inclusion.NON_NULL"/>
</annox:annotate>
그러나 모든 경우에
, ValueParseException을 받고 일을하지 않았다. 그렇다면 include(), JsonSerialize의 typing()과 같은 매개 변수를 주석에 추가하는 올바른 방법은 무엇입니까? How to add Jackson annotations to POJO generated from XSD by JAXB/XJC? 에 따라 또한, 나는 또한 이것은 또한 어떤 주석의 일부를 포함 추가하지 않은
<jaxb:bindings schemaLocation="Person.xsd" multiple="true">
<jaxb:bindings node="xs:complexType[@name='personType']/xs:sequence/xs:element[@type='xs:date']" multiple="true">
<annox:annotate>
<annox:annotate target="getter" annox:class="org.codehaus.jackson.map.annotate.JsonSerialize"
using="org.learning.json.JsonDateSerializer"/>
</annox:annotate>
<annox:annotate>
@org.codehaus.jackson.map.annotate.JsonSerialize
(include=org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion.ALWAYS
</annox:annotate>
</jaxb:bindings>
</jaxb:bindings>
을 시도했다.
감사합니다. Alexey – KumarRaja
언급 한 XML 구문이 매력처럼 작동합니다. 다시 한번 감사드립니다. – KumarRaja