Uploaded image for project: 'Apache Avro'
  1. Apache Avro
  2. AVRO-2107

Unable to deserialize JSON with array type to GenericRecord

    XMLWordPrintableJSON

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);
      

      Attachments

        1. test-schema.avsc
          2 kB
          Darshan Mehta
        2. sample.json
          0.1 kB
          Darshan Mehta

        Activity

          People

            Unassigned Unassigned
            darshanmehta2 Darshan Mehta
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: