One of the key aspect I wanted to achieve while designing the MARS-Curiosity REST library was not to tie the developer to a specific implementation or library used in MARS-Curiosity.
For example, one may want to use a specific ORM / DAC library / JSON library for many different reasons (like performance, functionalities, uniformity with respect to the whole codebase of the project).
Given Andreas Hausladen has released a nice (easy to use) and performant JSON library (faster than built-it System.JSON library) named JsonDataObjects, I wanted to provide an example of how easy it is to plug such a library into MARS-Curiosity.
As you can see in the first screenshot, here above, you can simply use JsonDataObjects data types (TJsonObject, TJsonArray, …) as result values and/or arguments of your resources methods.
MARS-Curiosity will try to find a way to properly serialize those types according to the client’s request. This is done through a MessageBodyReader and a MessageBodyWriter implementation (you can find them in MARS.JsonDataObjects.ReadersAndWriters.pas unit).
So basically you only need to include the MARS.JsonDataObjects.ReadersAndWriters.pas unit in your uses list and you can start using JsonDataObjects in your REST application server written with MARS-Curiosity.
Kudos to Andreas for the great JsonDataObjects library. 🙂
PS: I am going to do the same thing using the Grijjy library (that has serialization/deserialization and BSON support as a plus!)