Hi Lewis, In Avro, types are not nullable by default (unlike most programming languages). So a type of {"type":"map", "values":"string"} with a default of null does not make sense, because the type can never be null. If you wanted the type to be nullable, your type would have to be ["null", {"type":"map", "values":"string"}].
But a better solution may be to set your default to {}, like this: {"name": "outlinks", "type": {"type":"map", "values":"string"}, "default":{}} Does that help? Martin On 7 January 2014 10:50, Lewis John Mcgibbney <lewis.mcgibb...@gmail.com>wrote: > Hi Folks, > We have the following avsc (below). The problem we are having though is > that when we want to reach a 'map' type field e.g. outlinks, field value > comes null (not with an empty map object). To prevent this, we have to set > an empty map object before we do any operation in order not to get any NPE. > We therefore have to set empty map objects before any serialization... > Is there a better default value for this field (and other similar > scenarios)? > Thanks in advance, any guidance is greatly appreciated. > Lewis > > { > "type": "record", > "name": "WebPage","default":null, > "namespace": "org.apache.gora.examples.generated", > "fields" : [ > {"name": "url", "type": ["null","string"], "default":null}, > {"name": "content", "type": ["null","bytes"],"default":null}, > {"name": "parsedContent", "type": {"type":"array", "items": "string"}, > "default":null}, > {"name": "outlinks", "type": {"type":"map", "values":"string"}, > "default":null}, > {"name": "metadata", "default":null, "type": { > "name": "Metadata", > "type": "record", > "namespace": "org.apache.gora.examples.generated", > "fields" : [ > {"name":"version","type":"int","default":0}, > {"name":"data","type":{"type":"map","values":"string"}, > "default":null} > ] > }} > ] > } > > > > -- > *Lewis* >