Есть ли возможность получить номер строки JSON из AvroTypeException?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли возможность получить номер строки JSON из AvroTypeException?

Сообщение Anonymous »

Я работаю над валидатором 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»