Maxime, I believe this is a bug, specifically at [1]. It should support MapRecord entries as well. I have written NIFI-5678 [2] to address this. The workaround is the one you and Bryan mentioned, using a record instead of a map.
Regards, Matt [1] https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-extension-utils/nifi-record-utils/nifi-standard-record-utils/src/main/java/org/apache/nifi/schema/validation/StandardSchemaValidator.java#L199 [2] https://issues.apache.org/jira/browse/NIFI-5678 On Wed, Oct 10, 2018 at 10:19 AM Maxime Jattiot <[email protected]> wrote: > > Yes I made it worked with record type as well but I can't use a record > because my field names are dynamic. > > In many JSON we use collections of keys that will be named at runtime. I > thought the map data type of Avro was specially designed for it .... > > Any other ideas ? > > > On Wed, Oct 10, 2018 at 4:09 PM Bryan Bende <[email protected]> wrote: > > > I was able to make it work using a nested record instead of a map.... > > > > { > > "type": "record", > > "name": "example", > > "fields" : [ > > { > > "name": "field1", > > "type": { > > "name" : "field1", > > "type" : "record", > > "fields" : [ > > { "name": "toto", "type": "string" }, > > { "name": "titi", "type": "string" } > > ] > > } > > } > > ] > > } > > On Wed, Oct 10, 2018 at 10:00 AM Maxime Jattiot <[email protected]> > > wrote: > > > > > > Sure, here is the schema : > > > { > > > "name" : "test", > > > "type" : "record", > > > "fields" : [ { > > > "name" : "field1", > > > "type" : { > > > "type" : "map", > > > "values" : "string" > > > } > > > } ] > > > } > > > > > > And here is the JSON message : > > > [{ > > > "field1": { > > > "toto" : "v1", > > > "titi" : "v2" > > > } > > > }] > > > > > > On Wed, Oct 10, 2018 at 2:48 PM Bryan Bende <[email protected]> wrote: > > > > > > > Hello, > > > > > > > > The screenshots did not come through, maybe just paste the schema and > > JSON > > > > as text in the email. > > > > > > > > Thanks. > > > > > > > > On Wed, Oct 10, 2018 at 6:57 AM Maxime Jattiot <[email protected]> > > > > wrote: > > > > > > > > > Hello everyone, > > > > > > > > > > I am having hard time to validate a simple JSON message with an Avro > > > > > schema. My schema works with avro-tools but doesn't with > > ValidateRecord > > > > > processor. I wish you could help me. > > > > > > > > > > - I am having the following debug log within Nifi : > > > > > > > > > > Record #1 is invalid due to: > > > > > MapRecord[{toto=v1, titi=v2}] is not a valid value for /field1: > > Value is > > > > > of type org.apache.nifi.serialization.record.MapRecord but was > > expected > > > > to > > > > > be of type MAP[STRING] > > > > > > > > > > > > > > > - Here is my schema : > > > > > > > > > > [image: Screen Shot 2018-10-10 at 11.21.41.png] > > > > > > > > > > - Here is the JSON content sent : > > > > > > > > > > [image: Screen Shot 2018-10-10 at 11.22.10.png] > > > > > > > > > > Does someone has any clue ? I have been struggling 2 days with this > > map > > > > > data type ... :( > > > > > > > > > > Thank you ! > > > > > > > > > > Maxime > > > > > > > > > > >
