Search code examples
apache-nifi

How to convert dozens of fields to Nifi Attributes?


I have json with dozens of fields, how can I easily convert it to nifi attribute?

I used EvaluateJsonPath but it is necessary to enter the values ​​one by one.

I will use these attributes in Phoenix DB, When I use ConvertJsontoSQL it doesn't work...

Can you help with this issue?

JoltTransformJSON Sample Content as follows ;

{
  "AAAA": "AAAA",
  "BBBB": "BBBB",
  "CCCC": "CCCC",
  "DDDD": "DDDD",
  "EEEE": "EEEE",
  "FFFF": "FFFF",
  "GGGG": "GGGG",
  "HHHH": "HHHH",
  ...
  ...
  ...

}

I want to define json fields to nifi Attributes. I don't want to enter one by one with EvaluateJsonPath.


Solution

  • Edit : I found the this Script for ExecuteGroovyScript and handle it.

    import org.apache.commons.io.IOUtils
    import java.nio.charset.*
    def flowFile = session.get();
    if (flowFile == null) {
        return;
    }
    def slurper = new groovy.json.JsonSlurper()
    def attrs = [:] as Map<String,String>
    session.read(flowFile,
        { inputStream ->
            def text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
            def obj = slurper.parseText(text)
            obj.each {k,v ->
               attrs[k] = v.toString()
            }
        } as InputStreamCallback)
    flowFile = session.putAllAttributes(flowFile, attrs)
    session.transfer(flowFile, REL_SUCCESS)