cancel
Showing results for 
Search instead for 
Did you mean: 

Null Safe access option for object value reference in JSON Generator snap?

Charles
New Contributor II

Hi,

I’m trying to reference a value from the input object in the JSON Generator snap. The property is optional in the upstream snaps. If I straight reference it, I’ll get an “Invalid JSON-Path field not found” error.

Is there a similar way to the use “null-safe access” option like in the mapper snap in the JSON Generator snap?
Is there a way to use the $.get() method in the JSON Generator snap? I keep getting syntax errors.

Below is my property reference:
$['wd:Project_Data']['wd:End_Date']

This fails:

$['wd:Project_Data'].get("wd:End_Date")
$['wd:Project_Data'].get(['wd:End_Date'])
$.get(['wd:Project_Data']['wd:End_Date'])
1 ACCEPTED SOLUTION

del
Contributor III

@Charles,
Like Patrick, I was also thinking Velocity (VTL) as a solution, but as I tried to solution your original post, the Workday namespace convention in the property names adds some complexity. I don’t know if Velocity beats the null-safe mapper for your particular use case, but it can be good info for your tool belt in the future.

The kind of ugly solution I came up with (in a one-liner) is:

[
    {
       "output" : #set ($pd = $['wd:Project_Data']) #set ($ed = $pd['wd:End_Date']) #if (${ed}) ${ed} #else null #end
    }
]

I’m not well versed in VTL, so there’s likely something a little cleaner than the above.

View solution in original post

10 REPLIES 10

Charles
New Contributor II

@del, really appreciate the working example, thank you! Like you mention, I don’t think VTL outweighs putting in a mapper snap, but really glad to learn about VTL as a tool for potential future solutions. I guess I’ll have to read up on that a bit. Thank you for the start!