How to fail a Snap for Invalid json as i/p doc(Duplicate keys)

Hi Team,
I am sending a invalid json payload from the postman to my pipeline.
The pipeline has first snap as Copy, when i checked the output of copy it has removed duplicated keys from the invalid json payload. My expectation was that it will throw error as i have sent invalid json.
Any thought on how can i fail the pipeline if the payload coming as invalid json into pipeline/snap?
Below was payload i sent to pipe from postman tool-
{
“www”: {
"station": “3333”,
"station": “22222”,
"station": “44444”,
“dd”: 24224,
“dd1”: “34224”,
“dd2”: “sfsf”,
“dd3”: “dddsfsf”
}
}

The output of copy snap came as below(i wannt the snap to be failed as it was invalid json data)-
{
“www”: {
"station": “44444”,
“scaleId”: “wrwr”,
“dd”: 24224,
“dd1”: “34224”,
“dd2”: “sfsf”,
“dd3”: “dddsfsf”
}
}

Thanks,
Kumar R

why are you using a copy snap to validate JSON? Copy will just simply give you multiple outputs, feed you input from postman to a JSON generator and it should fail validating the JSON.

Hi Anubhav,
Thanks for looking in this! I gave example of copy snap to show that it removes dup keys in invalid json.
As per your suggestion i tried using Json generator by having i/p view and template to snap as below-

[
{
“www” : $www
}
]
But Json generator also has removed dup key and provided output. I want this to be failed as i supplied invalid json from psotman. $www has dup key inside it as ‘station’

Hi,
Can you try JSON.parse() function in a mapper and give it a try.

The i/p feed itself was json so can’t use JSON.parse.
To use parse need to make it string first i.e JSON.parse(JSON.stringify($))

However JSON.stringify($) itself removing duplicate key.

Most (all?) JSON parsers don’t consider duplicate keys as a problem. Why are you concerned about this?

I think you’ll find that other errors, like non-terminated strings, missing curly braces, and other syntax errors will be flagged correctly.

Hi Tim,
Yes other errors like non-terminated strings are giving proper validation erros.
Concern for dup key is because our testing team has this scenario of sending invalid json for the automation testing and they want this case to be failed, but as dup key is not problem for most of snaps so they will get success response. Testing team will expect invalid json error for this but getting success.

We have test pattern in all interfaces for all tools. As apigee and tibco have solution for this.
Apigee has policy regExp and tibco parser has Staxon function for json parsers, so i am looking for similar option in snaps.
Please let me know any thoughts to validate this invalid json due to dup keys.

With Regards,
KumarR

Hi Team,
Below workaround i did to using Python script to validate invalid json -
1-Have binary to doc snap as first snap and land i/p as encodedBase64
2-Add next snap as Script snap with python lang.
Decode back the i/p doc in script and use json.loads module for parsing json it will raise error on dup key.
Refer below link for script-

Thanks,
Kumar