У нас есть схема JSON и генерируем от нее pojos. Но с той же схемой мы сталкиваемся с ошибкой, когда пытаемся проверить объект, который мы создали таким образом.
Я могу воспроизвести эту ошибку с помощью этого простого теста:
import static org.assertj.core.api.Assertions.assertThat;
import java.io.IOException;
import java.util.Set;
import org.junit.jupiter.api.Test;
import org.springframework.core.io.ClassPathResource;
import com.networknt.schema.InputFormat;
import com.networknt.schema.JsonSchema;
import com.networknt.schema.JsonSchemaFactory;
import com.networknt.schema.SpecVersion;
import com.networknt.schema.ValidationMessage;
class ValidatorTest {
@Test
void validateTest() throws IOException {
// prepare
JsonSchemaFactory schemaFactory = JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V202012);
JsonSchema jsonSchema = schemaFactory
.getSchema(new ClassPathResource("schema.json", this.getClass().getClassLoader()).getInputStream());
String jsonString = "{ \"datetime\": \"2025-01-30T14:21:55.007933\" }";
// act
Set validate = jsonSchema.validate(jsonString, InputFormat.JSON);
// assert
assertThat(validate).isEmpty();
}
}
< /code>
и схема json < /p>
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Schema",
"type": "object",
"properties": {
"datetime": {
"type": "string",
"format": "date-time",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{1,9}$"
}
}
}
< /code>
Мы получаем этот java.lang.assertionerror:
ожидание пустого, но было: [$ .dateTime: не соответствует шаблону даты, должен быть действительным RFC 3339 Date- время]
Подробнее здесь: https://stackoverflow.com/questions/794 ... d-rfc-3339
Java Networknt Json-Schema-Validator Date-Time Образец должен быть действующим RFC 3339 Day-Time ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение