Sagan Pariyar
Sagan Pariyar

Reputation: 200

Nifi convert json to custom json using jolt script

I have json like

{
  "error_message_1": "missing_field_1",
  "error_message_2": "missing_field_2",
  "error_message_3": "missing_field_3"
}
I want json to be formed as below

{
"payloads":[
{
   "error_message_1": "missing_field_1",
   "error_message_2": "missing_field_2"
   "error_message_3": "missing_field_3"
}],
"timestamp":"$timestmap",
"source":"nifi"
}
   
   

please let me know the jolt script for this.

Upvotes: 0

Views: 255

Answers (1)

notNull
notNull

Reputation: 31490

Use this jolt spec:

we are creating payloads array and keeping all error_message* keys into payloads array.

[{
    "operation": "shift",
    "spec": {
        "error_message_1": "payloads[0].error_message_1",
        "error_message_2": "payloads[0].error_message_2",
        "error_message_3": "payloads[0].error_message_3"
    }
}, {
    "operation": "default",
    "spec": {
      "timestamp":"$timestmap",
        "source":"nifi"
    }
}]

Output:

enter image description here

In addition if you want timestamp value for the timestamp key then use the below spec:

[{
    "operation": "shift",
    "spec": {
        "error_message_1": "payloads[0].error_message_1",
        "error_message_2": "payloads[0].error_message_2",
        "error_message_3": "payloads[0].error_message_3"
    }
}, {
    "operation": "default",
    "spec": {
      "timestamp":"${now():format('yyyy-MM-dd HH:mm:ss.SSS')}",
        "source":"nifi"
    }
}]

Output:

{
    "payloads": [{
        "error_message_1": "missing_field_1",
        "error_message_2": "missing_field_2",
        "error_message_3": "missing_field_3"
    }],
    "source": "nifi",
    "timestamp": "2018-10-30 08:51:16.572"
}

Upvotes: 5

Related Questions