Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Not A Bug
-
1.8.1, 1.8.2
-
None
-
None
-
None
Description
I am trying to deserialise the json with array type into GenericRecord and I get the following exception:
Exception in thread "main" org.apache.avro.AvroTypeException: Unknown union branch sampleArrayRecordString at org.apache.avro.io.JsonDecoder.readIndex(JsonDecoder.java:445) at org.apache.avro.io.ResolvingDecoder.doAction(ResolvingDecoder.java:290) at org.apache.avro.io.parsing.Parser.advance(Parser.java:88) at org.apache.avro.io.ResolvingDecoder.readIndex(ResolvingDecoder.java:267) at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:179) at org.apache.avro.generic.GenericDatumReader.readArray(GenericDatumReader.java:266) at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:177) at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:153) at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:232) at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:222) at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:175) at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:153) at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:179) at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:153) at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:232) at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:222) at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:175) at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:153) at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:145) at a.b.c.d.Test2.main(Test2.java:19)
Below is the code:
final Schema schema = Schema.parse(new File( "<schema_file_path>")); byte[] payload = Files.readAllBytes(Paths.get( "<json_file_path>")); GenericRecord record = new GenericDatumReader<GenericRecord>(schema).read(null, DecoderFactory.get().jsonDecoder(schema, new String(payload))); System.out.println(record);