Я работаю над валидатором JSON-avro, и он работает нормально. Однако, когда JSON недействителен для схемы avro, я получаю только сообщение «Ожидаемое целое. Получил VALUE_STRING». Это было бы хорошо для небольших файлов JSON, но не для огромных.
Есть ли способ получить конкретную строку JSON, в которой сработало сообщение «Ожидаемое целое. Получил VALUE_STRING»?
Код:
public static boolean validateJson(String json, Schema schema) throws Exception {
InputStream input = new ByteArrayInputStream(json.getBytes());
DataInputStream din = new DataInputStream(input);
try {
DatumReader reader = new GenericDatumReader(schema);
Decoder decoder = DecoderFactory.get().jsonDecoder(schema, din);
reader.read(null, decoder);
return true;
} catch (AvroTypeException e) {
System.out.println(e.getMessage());
return false;
}
}
Я ожидаю что-то вроде «строка 3: Ожидаемое целое число. Получено VALUE_STRING».
Файл pom.xml:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.example
maventest
1.0-SNAPSHOT
21
21
UTF-8
org.apache.avro
avro
1.11.3
commons-io
commons-io
2.17.0
org.slf4j
slf4j-simple
2.0.16
test
Json:
{
"company": "00",
"id": 12345,
"marketingChannel": {
"string": "00"
},
"calendarWeek": {
"int": 10
},
"year": {
"int": "asda"
},
"advertisingMaterial": {
"string": "test"
},
"validFromDate": {
"string": "2024-05-01"
},
"validToDate": {
"string": "2024-05-10"
},
"pages": 0,
"mainTopic": {
"string": "test"
},
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... eexception