code: public RequestParameterBuilder paramJson(String name, Object value, String type) throws UnsupportedEncodingException {
          String encodedJsonValue = encodeJson(value, type);
  
          if (added || originalUrl.contains("?")) {
              buffer.append("&");
          }
          else {
              buffer.append("?");
          }
  
          buffer.append(name);
          buffer.append("=");
          buffer.append(encodedJsonValue);
  
          // set a flag that at least one request parameter was added
          added = true;
  
          return this;
      }
docs: Adds a request parameter to the URL with specifying a data type of the given parameter value. Data type is sometimes required, especially for Java
  generic types, because type information is erased at runtime and the conversion to JSON will not work properly. Parameter's value is converted to JSON
  notation when adding. Furthermore, it will be encoded according to the acquired encoding.
  
  @param name name of the request parameter
  @param value value of the request parameter
  @param type data type of the value object. Any primitive type, array, non generic or generic type is supported. Data type is sometimes required to
  convert a value to a JSON representation. All data types should be fully qualified. Examples: "boolean" "int" "long[]" "java.lang.String"
  "java.util.Date" "java.util.Collection<java.lang.Integer>" "java.util.Map<java.lang.String, com.durr.FooPair<java.lang.Integer,
  java.util.Date>>" "com.durr.FooNonGenericClass" "com.durr.FooGenericClass<java.lang.String, java.lang.Integer>"
  "com.durr.FooGenericClass<int[], com.durr.FooGenericClass<com.durr.FooNonGenericClass, java.lang.Boolean>>".
  @return RequestParameterBuilder updated this instance which can be reused
  @throws UnsupportedEncodingException DOCUMENT_ME