无法使用jsonschema2pojo从json对象生成DateTime字段到java pojo?

时间:2016-06-16 10:14:14

标签: java json

我有以下json对象:

{
  "period": {
    "startDate": "2016-09-01T14:39:13.884Z",
    "endDate": "2021-09-01T14:39:13.884Z"
}

在我的maven插件配置中,我添加了

<plugin>
    <groupId>org.jsonschema2pojo</groupId>
    <artifactId>jsonschema2pojo-maven-plugin</artifactId>
    <version>0.4.23</version>
    <configuration>
        <sourceType>json</sourceType>
    </configuration>
    <executions>
        <execution>
            <id>id</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                ...
                <dateTimeType>java.time.ZonedDateTime</dateTimeType>
            </configuration>
        </execution>
    </executions>
</plugin>

我正在使用Java8。但是在我生成的java类中:

@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
    "startDate",
    "endDate"
})
public class Period {

    @JsonProperty("startDate")
    private String startDate;
    @JsonProperty("endDate")
    private String endDate;
    ...
}

字段&#39; type被识别为String。是否可以直接从具有正确DateTime类型的json对象生成?或者我必须使用json架构来执行此操作吗?

1 个答案:

答案 0 :(得分:0)

这对我有用,请参阅下面的maven插件设置。我能看到的唯一有意义的区别是你使用json作为源,我使用的是json模式文件。您可以尝试创建这样的模式文件:

    {
        "$schema": "http://json-schema.org/draft-03/schema",
        "title": "My Title",
        "type": "object",
        "description": "The departure time info",
        "properties": {
            "scheduled": {
                "type": "string",
                "format": "date-time",
                "required": true,
                "description": "Scheduled time of departure."
            },
         .
         .
         .
    }

这是我的maven插件配置:

        <plugin>
            <groupId>org.jsonschema2pojo</groupId>
            <artifactId>jsonschema2pojo-maven-plugin</artifactId>
            <version>0.4.32</version>
            <configuration>
                <sourceDirectory>${basedir}/src/main/resources/schema/model</sourceDirectory>
                <targetPackage>myPackage</targetPackage>
                <useJodaDates>false</useJodaDates>
                <useJodaLocalTimes>false</useJodaLocalTimes>
                <useJodaLocalDates>false</useJodaLocalDates>
                <includeJsr303Annotations>false</includeJsr303Annotations>
                <includeAdditionalProperties>false</includeAdditionalProperties>
                <dateTimeType>java.time.ZonedDateTime</dateTimeType>
                <dateType>java.time.LocalDate</dateType>
                <generateBuilders>true</generateBuilders>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>