Serialization

Serializing the criteria instance can be useful for transferring the criteria data.

There are many use cases:

  • Appending criteria on a URL query string parameter.

  • Writing criteria to a file.

  • Saving criteria to the database.

Base64

The criteria can be serialized to Base64 format.

import io.github.magonxesp.criteria.infrastructure.serialization.encodeToBase64

val criteria = criteria {
   filter("author_name", "Svetlana Isakova", FilterOperator.EQUALS)
}

// serialize to Base64
val base64 = criteria.encodeToBase64()

The resulting Base64 representation will be as follows:

eyJmaWx0ZXJzIjpbeyJmaWVsZCI6ImF1dGhvcl9uYW1lIiwidmFsdWUiOiJTdmV0bGFuYSBJc2Frb3ZhIiwib3BlcmF0b3IiOiI9In1dLCJvcmRlckJ5IjpbXSwicGFnaW5hdGlvbiI6eyJwYWdlIjoxLCJzaXplIjpudWxsfX0=

Also, a Base64 encoded criteria can be deserialized.

import io.github.magonxesp.criteria.infrastructure.serialization.decodeCriteriaFromBase64

val criteria = "<base64 string>".decodeCriteriaFromBase64()

JSON

The criteria can be serialized to JSON format, which serves as the initial serialization method before Base64 encoding.

import io.github.magonxesp.criteria.infrastructure.serialization.serializeToJson

val criteria = criteria {
   filter("author_name", "Svetlana Isakova", FilterOperator.EQUALS)
}

// serialize to JSON
val json = criteria.serializeToJson()

The resulting JSON representation will be as follows:

{
  "filters": [
    {
      "field": "author_name",
      "value": "Svetlana Isakova",
      "operator": "="
    }
  ],
  "orderBy": [],
  "pagination": {
    "page": 1,
    "size": null
  }
}

And for deserialize the JSON-encoded criteria, we can use the deserializeCriteriaFromJson() extension function.

import io.github.magonxesp.criteria.infrastructure.serialization.deserializeCriteriaFromJson

val criteria = "<json string>".deserializeCriteriaFromJson()

Last updated