[ 
https://issues.apache.org/jira/browse/AVRO-2107?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Darshan Mehta updated AVRO-2107:
--------------------------------
    Description: 
I am trying to deserialise the json with array type into GenericRecord and I 
get the following exception:


{code:java}
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)
{code}

Below is the code:


{code:java}
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);
{code}

  was:
I am trying to deserialise the json with array type into GenericRecord and I 
get the following exception:


{code:java}
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)
{code}

Below is the code:


{code:java}
                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);
{code}


> Unable to deserialize JSON with array type to GenericRecord
> -----------------------------------------------------------
>
>                 Key: AVRO-2107
>                 URL: https://issues.apache.org/jira/browse/AVRO-2107
>             Project: Avro
>          Issue Type: Bug
>    Affects Versions: 1.8.1, 1.8.2
>            Reporter: Darshan Mehta
>         Attachments: sample.json, test-schema.avsc
>
>
> I am trying to deserialise the json with array type into GenericRecord and I 
> get the following exception:
> {code:java}
> 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)
> {code}
> Below is the code:
> {code:java}
> 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);
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to