Create json for rest API

1
0
-1

Hello, I am trying to create a json body for a rest API call, but it returned error

Body as map output cannot be set. Response content type is not json compliant(application/problem+json; charset=utf-8).

I used import groovy.json.JsonBuilder, and created the json as some examples in Q&A, but it doesn't work

def builder=new JsonBuilder()
def line=builder {
email {
sender mail.sender
receiver mail.receiver
exception mail.exceptiondemand
subject "test subject"
exceptionEndDate new Date(System.currentTimeMillis())+1
}
}
return line

mail is created as bdm object dedicated to API call

exception is my object created in process and correctly filled

Is anything wrong with my code?
Thanks

2 answers

1
0
-1

Hello,

Thanks for the response, sorry for the delay I was on another project, so I wasn't clear in my first message the API is a POST call so I need to send the Bonita business object to the API as formated JSON, so I need to create a business Object Email in my BDM, or can I create only the JSON?

here is my workflow:
We create a demand inside Bonita, and we need to send it to this API, who will create a templated Email and send it to specific users to validate or refuse this demand

And we use Bonita Community .
Thanks

1
0
-1

Hi,

You can use the the JsonSluper to parse the text response like this:

def body = new JsonSlurper().parseText(bodyAsString);
// body is Map (or List of Map) represntation of the JSON response

To create a Business Object from this you must do the mapping by hand

def body = new JsonSlurper().parseText(bodyAsString);
def email = new Email() // assumption is that Email is a Business Object in your BDM
email.sender = body .sender
email.receiver = body.receiver
...

If there is a one-to-one mapping between the response and the business object you can try to use the as keyworg in Groovy.

def body = new JsonSlurper().parseText(bodyAsString);
return body as Email // assumption is that Email is a Business Object in your BDM

HTH
Romain

Notifications