Skip to main content
Nintex Community Menu Bar
Solved

post to REST service with json array


hi,

I have a REST service which needs an json array as an input. Like:

{    "array" :         [            {                "value1" : "abc",                "value2": 1.00            },            {                "value1" : "def",                "value2": 2.00            }        ]}

The SmartObjects method gets an Memo input parameter (requestarray). I think I have to expose this input parameter as a list with the serialize list function of the requestarray.

I know how to deserialize response values, but I couldn't figure out how to do it on the input side.

 

Is there a tutorial somewhere?

 

Best answer by reto

I ended up building the requestarray as a string with a formula. Works fine.

But I still wonder if there's a better solution.
View original
Translate
Did this topic help you find an answer to your question?

3 replies

  • 56 replies
  • March 7, 2020

Hi reto,


 


Perhaps you will find our documentation on REST Swagger file reference formats and Serialization/Deserialization to be helpful:


 


https://help.k2.com/onlinehelp/K2Five/UserGuide/5.3/default.htm#ServiceBrokers/EndPoints/REST_SwaggerFileReferenceFormat.htm


https://help.k2.com/onlinehelp/K2Five/DevRef/5.3/default.htm#SBrokers/SB-Serialization.htm


 


Thanks


 


 

Translate

  • Author
  • 2 replies
  • Answer
  • March 16, 2020
I ended up building the requestarray as a string with a formula. Works fine.

But I still wonder if there's a better solution.
Translate

  • Novice
  • 1 reply
  • November 25, 2022

This is an old question, but the information might be helpful for others.

You may need to modify your swagger definition file. In many cases, Swagger creates files that will define sub-objects inline within their parent objects (or even directly within the endpoint), and K2 doesn't like these. For example, Swagger might generate a file with these definitions:

"definitions": { "RequestBody": { "type": "object", "properties": { "array": { "type": "array", "items": { "type": "object", "properties": { "value1": { "type": "string" }, "value2": { "type": "number", "format": "double" } } } } } } }

This definition would give you a RequestBody object that can be serialized or deserialized, but it wouldn't give any way to serialize or deserialize the "array" property.

Instead, each "object" type needs to have its own definition, and the parent object needs to have a reference to the sub-object type. This gives the sub-object type a name, which you can then use to find the SmartBroker methods to serialize / serialize to array / serialize add to array.

The following definitions section is functionally identical to the above, but it would create a RequestBodyArray object in the SmartBroker, allowing you to serialize your array without resorting to direct string manipulation:

"definitions": { "RequestBody": { "type": "object", "properties": { "array": { "type": "array", "items": { "$ref": "#/definitions/RequestBodyArray" } } } }, "RequestBodyArray": { "type": "object", "properties": { "value1": { "type": "string" }, "value2": { "type": "number", "format": "double" } } } }

Translate

Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie Settings