Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

Json Parser help needed

Debasis Pati
Kilo Sage

I have a payload structure and i want to make it dynamic so i am sending the input values like short description description etc in the values also the standard payload structure.
Now i will use json parser and will parse and bring the fileds is there any way i can directly pass the dynmic values of the inputs like drag and drop and set it to the payload structure.

For example the below is my payload
{
"name":"",
"description":"",
"ticketType":"Incident",
"severity":"",
"impact":"",
}
here my name is short_description of the incident,description to description of the incident,severity is urgency and impact is impact of my incident 
now if i use parser it will create the root object and inside it will have name,description etc can i set those objects to the input values we can do it using script but is there any other way like directly setting the input variables.
@Ankur Bawiskar any idea ?


1 ACCEPTED SOLUTION

Naveen20
ServiceNow Employee

 

The JSON Parser step is read-only. It parses a JSON string into data pills for consumption, but you cannot reverse the flow and "set" values back into those parsed pill slots using drag-and-drop. The pills it creates are output references, not writable fields.

What You Can Do Instead (Without Script)

Inline String Template Approach — If the action you're calling (like a REST step) accepts the payload as a string/text field, you can construct the JSON directly inline by dragging pills into a text template:

{"name":"<drag short_description pill here>","description":"<drag description pill here>","ticketType":"Incident","severity":"<drag urgency pill here>","impact":"<drag impact pill here>"}

In the REST step's Request Body field, you'd literally type the JSON skeleton and then drag-and-drop your input pills into the value positions. Flow Designer will resolve them at runtime.

The catch — this works well for simple, flat payloads but becomes fragile with special characters (quotes, newlines) in your input values, since there's no automatic JSON escaping. A description field with a double quote in it would break the JSON structure.

When You Need Script

For anything beyond simple flat strings, a Script Step is the most reliable approach and only takes a few lines:

(function execute(inputs, outputs) {
    outputs.payload = JSON.stringify({
        name: inputs.short_description,
        description: inputs.description,
        ticketType: 'Incident',
        severity: inputs.urgency,
        impact: inputs.impact
    });
})(inputs, outputs);

This handles escaping automatically and is easy to maintain when the payload structure changes.

Summary

The inline string template trick in the REST step body is the closest thing to a pure drag-and-drop solution — no script step needed, and you get pill-based mapping visually. Just be aware of the escaping limitation. For production-grade flows where input data could contain special characters, the script step is a few lines and the safer path.

View solution in original post

2 REPLIES 2

Naveen20
ServiceNow Employee

 

The JSON Parser step is read-only. It parses a JSON string into data pills for consumption, but you cannot reverse the flow and "set" values back into those parsed pill slots using drag-and-drop. The pills it creates are output references, not writable fields.

What You Can Do Instead (Without Script)

Inline String Template Approach — If the action you're calling (like a REST step) accepts the payload as a string/text field, you can construct the JSON directly inline by dragging pills into a text template:

{"name":"<drag short_description pill here>","description":"<drag description pill here>","ticketType":"Incident","severity":"<drag urgency pill here>","impact":"<drag impact pill here>"}

In the REST step's Request Body field, you'd literally type the JSON skeleton and then drag-and-drop your input pills into the value positions. Flow Designer will resolve them at runtime.

The catch — this works well for simple, flat payloads but becomes fragile with special characters (quotes, newlines) in your input values, since there's no automatic JSON escaping. A description field with a double quote in it would break the JSON structure.

When You Need Script

For anything beyond simple flat strings, a Script Step is the most reliable approach and only takes a few lines:

(function execute(inputs, outputs) {
    outputs.payload = JSON.stringify({
        name: inputs.short_description,
        description: inputs.description,
        ticketType: 'Incident',
        severity: inputs.urgency,
        impact: inputs.impact
    });
})(inputs, outputs);

This handles escaping automatically and is easy to maintain when the payload structure changes.

Summary

The inline string template trick in the REST step body is the closest thing to a pure drag-and-drop solution — no script step needed, and you get pill-based mapping visually. Just be aware of the escaping limitation. For production-grade flows where input data could contain special characters, the script step is a few lines and the safer path.

Ankur Bawiskar
Tera Patron

@Debasis Pati 

share screenshots

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader