Search code examples
groovyapache-nifi

Nifi - Groovy Json Script define null attributes


I have a Nifi Groovy Script. Assigns fields to nifi attributes but it define null if json values ​​are empty. if json value is null I want to define attribute empty.

null attributes look like this ;

enter image description here

I want to like this ;

enter image description here

this is the script i use ;

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)

Solution

  • This is i solved 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 ->
    
              if (v.toString()=="null")
              {
                attrs[k] = ''
              } else {
                attrs[k] = v.toString()
              }
    
            }
        } as InputStreamCallback)
    flowFile = session.putAllAttributes(flowFile, attrs)
    session.transfer(flowFile, REL_SUCCESS)