Я пытаюсь сериализовать пользовательский объект, который имеет поля java .util.set, используя apache avro, используя приведенный ниже код,
final Schema schemaItemImportSchema = ReflectData.get().getSchema(clazz);
final DatumWriter<T> writer = new ReflectDatumWriter<>(clazz);
byte[] data = new byte[0];
final ByteArrayOutputStream stream = new ByteArrayOutputStream();
try {
final Encoder encoder = EncoderFactory.get().jsonEncoder(schema, stream);
datumWriter.write(data, encoder);
encoder.flush();
data = stream.toByteArray();
} catch (final Exception excp) {
log.error(excp);
}
И десериализацию, используя приведенный ниже код,
final Schema schemaItemImportSchema = ReflectData.get().getSchema(clazz);
final DatumReader<T> reader = new ReflectDatumReader<>(clazz);
Object dataActual = new Object();
try {
final Decoder decoder = DecoderFactory.get().jsonDecoder(schema, new String(data));
dataActual = reader.read(null, decoder);
} catch (final IOException excp) {
log.error(excp);
}
Используя приведенный выше код, я могу успешно сериализовать с установленными полями, но во время десериализации становится ошибка, java .lang.RuntimeException: java .lang.NoSuchMethodException: java .util.Set. ()
Если я использую @AvroIgnore для заданных полей, сериализация и десериализация отлично работает.
Может кто-нибудь помочь мне с сериализацией и десериализацией java .util.set полей