jackson-module-jsonSchema icon indicating copy to clipboard operation
jackson-module-jsonSchema copied to clipboard

JsonFormat not supported?

Open dherges opened this issue 5 years ago • 1 comments

Entity:

public class Wound {

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "UTC")
    @JsonProperty("createdAt")
    @JsonPropertyDescription("A date time object w/o timezone.")
    @NotNull
    private LocalDateTime createdAt;

}

When I generate with JavaTimeModule(), I get an array of integer in the json schema:

        ObjectMapper objectMapper = new ObjectMapper();
                .registerModule(new JavaTimeModule());

        JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator(objectMapper);
        JsonNode jsonSchema = jsonSchemaGenerator.generateJsonSchema(Wound.class);
        String jsonSchemaAsString = objectMapper.writeValueAsString(jsonSchema);
        "createdAt": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "A date time object w/o timezone."
        }

When I omit the JavaTimeModule, I a get a LocalDateTimeObject with Java members:

    "LocalDateTime": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "dayOfYear": {
          "type": "integer"
        },
        "dayOfWeek": {
          "type": "string",
          "enum": [
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY",
            "SATURDAY",
            "SUNDAY"
          ]
        },
        "year": {
          "type": "integer"
        },
...

EXPECTED RESULT:

    "dateTime": {
      "description": "A date time object w/o timezone.",
      "type": "string",
      "format": "date-time",
      "javaType": "java.time.LocalDateTime",
      "customDateTimePattern" : "yyyy-MM-dd'T'HH:mm:ss"
    }

dherges avatar Nov 09 '18 15:11 dherges