У нас есть схема JSON и генерируем от нее pojos. Но с той же схемой мы сталкиваемся с ошибкой, когда пытаемся проверить объект, который мы создали таким образом.
Я могу воспроизвести эту ошибку с помощью этого простого теста:
import static org.assertj.core.api.Assertions.assertThat;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Set;
import org.junit.jupiter.api.Test;
import org.springframework.core.io.ClassPathResource;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
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
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
JsonSchemaFactory schemaFactory = JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V202012);
JsonSchema jsonSchema = schemaFactory
.getSchema(new ClassPathResource("schema.json", this.getClass().getClassLoader()).getInputStream());
// act
Schema schema = new Schema(LocalDateTime.now());
String jsonString = mapper.writeValueAsString(schema);
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
Программисты JAVA общаются здесь
1738255287
Anonymous
У нас есть схема JSON и генерируем от нее pojos. Но с той же схемой мы сталкиваемся с ошибкой, когда пытаемся проверить объект, который мы создали таким образом.
Я могу воспроизвести эту ошибку с помощью этого простого теста:
import static org.assertj.core.api.Assertions.assertThat;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Set;
import org.junit.jupiter.api.Test;
import org.springframework.core.io.ClassPathResource;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
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
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
JsonSchemaFactory schemaFactory = JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V202012);
JsonSchema jsonSchema = schemaFactory
.getSchema(new ClassPathResource("schema.json", this.getClass().getClassLoader()).getInputStream());
// act
Schema schema = new Schema(LocalDateTime.now());
String jsonString = mapper.writeValueAsString(schema);
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- время]
Подробнее здесь: [url]https://stackoverflow.com/questions/79400341/java-networknt-json-schema-validator-date-time-pattern-must-be-a-valid-rfc-3339[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия