    //@include lib_Class.js

    /**
     * Helper functions for JSON processing
     *
     * @author Michael Weiler, ELO Digital Office GmbH
     * @version 1.0
     *
     * @eloall
     * @requires sol
     */
    sol.define("sol.common.JsonUtils", {

      singleton: true,

      /**
       * Stringify JavaScript objects and handles Java objects
       * @param {Object} obj Object to stringify
       * @param {Object} objFormat Object formatting stringify e.g. objFormat = {tabStop: 2}
       * @return {String} string value of object
       */
      stringifyAll: function (obj, objFormat) {
        var tabStop = null;
        if (objFormat) {
          if (objFormat.tabStop) {
            tabStop = objFormat.tabStop;
          }
        }
        return JSON.stringify(obj, function (key, value) {
          if (typeof value === "boolean") {
            return value;
          }
          if (value instanceof java.lang.String) {
            return String(value);
          }
          if (value && value.getClass) {
            return String(value.toString());
          }
          return value;
        }, tabStop);
      },

      stringifyQuick: function (obj) {
        return JSON.stringify(obj, function (_, val) {
          return (val && val.getClass) ? String(val) : val;
        });
      },

      /**
       * Serializes a Java object
       * @param {java.lang.Object} javaObject Java object
       * @return {String}
       */
      serialize: function (javaObject) {
        var gsonBuilder, gson,
            json = "";

        if (!javaObject) {
          return "";
        }
        gsonBuilder = new Packages.com.google.gson.GsonBuilder();
        gsonBuilder.disableHtmlEscaping();
        gsonBuilder.setPrettyPrinting();
        gson = gsonBuilder.create();
        json = gson.toJson(javaObject) + "";

        return json;
      },

      /**
       * Deserializes a Java object
       * @param {String} json JSON
       * @param {String} className Class name
       * @return {java.lang.Object} javaObject Java object
       */
      deserialize: function (json, className) {
        var javaObject, gsonBuilder, gson, clazz;

        if (!json) {
          return;
        }

        if (!className) {
          throw "Java class name is empty";
        }

        clazz = java.lang.Class.forName(className);

        gsonBuilder = new Packages.com.google.gson.GsonBuilder();
        gsonBuilder.disableHtmlEscaping();
        gsonBuilder.setPrettyPrinting();
        gson = gsonBuilder.create();
        javaObject = gson.fromJson(json, clazz);

        return javaObject;
      }
    });