Skip to main content
Question

JSON Parser - Invaid JSON Payload


When using a JSON Parser to parse the output from a Web Request, the following JSON is producing the error “Enter a valid JSON payload”. This happens when I try to click the “Generate Output” option.

[{"slot_id":"1791","kiosk_id":"Denver","cabinet_id":"1"},{"slot_id":"1790","kiosk_id":"Denver","cabinet_id":"1"}]

When manually entering in JSON Path expression like “$.[0].slot_id”, which should result in “1791”, the result is instead empty.

Did this topic help you find an answer to your question?

10 replies

Forum|alt.badge.img+5
  • Community Debut
  • 87 replies
  • March 9, 2023

Hello @jkampman 

Hope you are well,

The Payload provided looks to be in a Array of Json, A Json object would be this alone:

{"slot_id":"1791","kiosk_id":"Denver","cabinet_id":"1"}. So if you’d like to get the data of the Slot_id under the array of Json, You could try something like $.[0][0].slot_id and it should get you the data.

 

Hope this helps! Thanks!

Let me know incase of queries! 

 


Forum|alt.badge.img
  • Community Debut
  • 6 replies
  • March 17, 2023

stike that reading the above, I’m an idiot.

 

Ammar, would this work for grabbing an email from the quoted array:

$.[0][0].email

 

[{"id":"redacted","status":"ACTIVE","created":"2022-08-02T23:24:32.000Z","activated":null,"statusChanged":"2022-08-02T23:28:19.000Z","lastLogin":"2023-03-17T17:11:38.000Z","lastUpdated":"2022-08-02T23:28:19.000Z","passwordChanged":"2022-08-02T23:28:19.000Z","type":{"id":"redacted"},"profile":{"firstName":"redacted","lastName":"redacted","mobilePhone":null,"secondEmail":null,"login":"redacted@redacted.com","email":"redacted@redacted.com"},"credentials":{"password":{},"provider":{"type":"OKTA","name":"OKTA"}},"_links":{"self":{"href":"https://redacted.okta.com/api/v1/users/redacted"}}}]
 


Forum|alt.badge.img
  • Community Debut
  • 6 replies
  • March 17, 2023

Also, where am I placing ‘$.[0][0].email’ in the web request, expression builder or in the JSON Parser somewhere?


Forum|alt.badge.img
  • Community Debut
  • 6 replies
  • March 17, 2023

@Ammar KB sorry forgot to tag you!


Forum|alt.badge.img+5
  • Community Debut
  • 87 replies
  • March 17, 2023

Hi @Brendan_08 

No worries!

You’d be adding this in the JSON parser itself, Please find an example below:

 

This would be shown in “insert Placeholders” -->Parser fields:

 

Hope this helps!


Forum|alt.badge.img
  • Community Debut
  • 6 replies
  • March 17, 2023

@Ammar KB like this:

 

 

 


Forum|alt.badge.img+5
  • Community Debut
  • 87 replies
  • March 17, 2023

@Brendan_08 Yes, That’s right, But we would be breaking down Array-based elements, For instance if you consider my earlier picture of Json parser, I’m breaking an Array of Strings of conversations from a ticket and taking in the 1st conversation alone by adding [0] to the new element to get the first value:

 

Similarly what you have is an Array of Json objects and hence you’d have to make it 2-dimensional, where the first [0] would be the first array out of 2 arrays and 2nd [0] would be the first element of the first array.

 

Apologies for not elaborating this in earlier replies. Hope this helps! Feel free to reach out to us at support@freshservice.com too for more queries!😄


Forum|alt.badge.img
  • Community Debut
  • 6 replies
  • March 17, 2023

Yeah, I have a ticket open with support, but they said:

“Hi Brendan,

I think the product team needs to consider this use case and build this natively so that it takes an array into consideration and does not throw an error.

I will keep you posted with more updates on this. Thanks! “

 

So I’m not sure they will be much help.


Forum|alt.badge.img+5
  • Community Debut
  • 87 replies
  • March 17, 2023

Apologies, I missed out your earlier reply:

 

In this case, You need not have [0][0].email, Since you’ve already generated the output for this whole Array, You can simply use insert Placeholders to print the value. That should work


Forum|alt.badge.img
  • Community Debut
  • 6 replies
  • March 17, 2023

This is the actual response I get from Okta:

 

[{"id":"redacted","status":"ACTIVE","created":"2022-08-02T23:24:32.000Z","activated":null,"statusChanged":"2022-08-02T23:28:19.000Z","lastLogin":"2023-03-17T17:11:38.000Z","lastUpdated":"2022-08-02T23:28:19.000Z","passwordChanged":"2022-08-02T23:28:19.000Z","type":{"id":"redacted"},"profile":{"firstName":"redacted","lastName":"redacted","mobilePhone":null,"secondEmail":null,"login":"redacted@redacted.com","email":"redacted@redacted.com"},"credentials":{"password":{},"provider":{"type":"OKTA","name":"OKTA"}},"_links":{"self":{"href":"https://redacted.okta.com/api/v1/users/redacted"}}}]

 

So that Is what I was trying to get piped into a condition node, and this is the error I am getting, retrieved from the Execution Logs:

 

System Message
[missing "en.js_translations.execution_logs.webrequest.response_body_new" translation]


[{"id":"redacted","status":"ACTIVE","created":"2022-08-02T23:24:32.000Z","activated":null,"statusChanged":"2022-08-02T23:28:19.000Z","lastLogin":"2023-03-17T17:11:38.000Z","lastUpdated":"2022-08-02T23:28:19.000Z","passwordChanged":"2022-08-02T23:28:19.000Z","type":{"id":"redacted"},"profile":{"firstName":"redacted","lastName":"redacted","mobilePhone":null,"secondEmail":null,"login":"redacted@redacted.com","email":"redacted@redacted.com"},"credentials":{"password":{},"provider":{"type":"OKTA","name":"OKTA"}},"_links":{"self":{"href":"https://redacted.okta.com/api/v1/users/redacted"}}}]

 

so should this work, see attached.

 

If not I’ll see if anyone in the community can help me with this, I don’t think support will be much help. Also I guess I should learn about this stuff in general.

 

Thank you for your help!


Reply