Created on 07-15-202003:35 AM - edited on 07-15-202005:35 AM by VidyaSargur
In order to convert JSON to XML, you can use ConvertRecord processor available as part of the NiFi tool (I worked on version: 1.11.4).
Here are the steps to configure ConvertRecord processor to convert JSON input to XML output:
Add a processor – ConvertRecord and right-click to “configure”:
Click on the “Record Reader value” and select “Create New Service”. Select “JSONTreeReader” and click CREATE:
Similarly, Click on the “Record Writer value” and select “Create New Service”. Select “XMLRecordSetWriter” and click CREATE:
Final configuration of Convert Record should look like this:
Click on “à to configure “JSONTreeReader” to configure details about the schema which should be read by the registry. The controller service form should open:
Click on “configure icon” of “JSONTreeReader” to start configuring the JSON Reader and configure as per below screenshot:
When you select “Create New Service” in the above screenshot, another form opens up. Fill it up based on below screenshot and click CREATE:
Fill in rest of the information as:
Click on à arrow next to “AvroSchemaRegistry” and now the controller service page would look like this:
Click on “configure icon” against “AvroSchemaRegistry” and configure the registry. Add a new property with any schema name (for example, my_schema), and property value should be an AVRO schema that your JSON reader should read. In this case, you can take JSON message and using any online tool, create an AVRO schema, and paste it here. You can create AVRO schema using an online tool (I used this one: AVRO schema generator)
Apply and enable the “AvroSchemaRegistry” and “JSONTreeReader” from controller service.
Click on “configure icon” on “XMLRecordSetWriter” in controller service and configure as below:
Finally, make sure to set a new property to let the ConvertRecord know the schema name as below in UpdateAttribute processor before sending the JSON message to ConvertRecord:
Thanks for this excellent post, it works almost perfect in 1.13.0 version.
The only problem I had was when did the last step (13) and the ConvertRecord processor became invalid with the following message:
I found the solution to this issue in this post of @pvillard where he updates the schema.name property before de ConvertRecord processor. I didn't complete understand the reason but it works.