I have some json data that looks like this:
{
\"id\": 1998983092,
\"name\": \"Test Name 1\",
\"type\": \"search string\",
\"creationDate\": \"2
I have this issue too and now resolved it.
I found @Nullable
annotation in Apache Avro to declare the field is nullable.
So, in this example, we should
import org.apache.avro.reflect.Nullable;
public class MyAvroRecord {
long id;
String name;
String type;
Date timestamp;
Date lastModifcationDate;
String lastModifiedUsername;
@Nullable
Boolean lockedQuery;
}
To be able to set Avro field to null
you should allow this in Avro schema, by adding null
as one of the possible types of the field. Take a look on example from Avro documentation:
{
"type": "record",
"name": "MyRecord",
"fields" : [
{"name": "userId", "type": "long"}, // mandatory field
{"name": "userName", "type": ["null", "string"]} // optional field
]
}
here userName
is declared as composite type which could be either null
or string
. This kind of definition allows to set userName
field to null. As contrast userId
can only contain long values, hence attempt to set userId
to null will result in NullPointerException
.