Hi,

I have an avro schema :
{
       "name": "Test",
       "type": "record",
       "fields": [{
                     "name": "container",
                     "type": ["null", "string"]
              }

       ]

}
The container field is an union implies it would allow any string or null value 
to that field.
https://avro.apache.org/docs/1.7.7/spec.html#Unions

So to make my avro serialization code generic, I am using GenericRecord api's 
for serializing the avro data.

When I am trying to serialize this record : {"container":null} , it runs 
completely fine.

But in when I try to serialize the container  field with data (Ex: 
{"container":"testData"}), it throws error saying :

Exception in thread "main" org.apache.avro.AvroTypeException: Expected 
start-union. Got VALUE_STRING
       at org.apache.avro.io.JsonDecoder.error(JsonDecoder.java:697)
       at org.apache.avro.io.JsonDecoder.readIndex(JsonDecoder.java:441)
       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.read(GenericDatumReader.java:155)
       at 
org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:193)
       at 
org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:183)
       at 
org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:151)
       at 
org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:142)


Can anyone please help me with what am I doing wrong here.

PS: I am using avro-1.7.7 version.

Thank you.

Regards
Devendra Tomar

Reply via email to