code: public <T> Optional<T> getValueAsObject(final String name, final TypeToken<T> type)
      {
          try
          {
              final Optional<String> raw = getValueAsString(name);
  
              if (raw.isPresent())
              {
                  //noinspection unchecked
                  return Optional.ofNullable((T) objectMapper.readValue(raw.get(), objectMapper.constructType(type.getType())));
              }
              else
              {
                  return Optional.empty();
              }
          }
          catch (IOException e)
          {
              LOGGER.warn("failed to get value '{}' as object {} - will return an absent value, reason: {}", name, type, e.getMessage());
              return Optional.empty();
          }
      }
docs: Get property value by parsing raw JSON as an object/ array.
  
  @param name property name
  @param type Type
  @return Object representation of raw JSON