/**
   * get service parameters of this particular service and convert them into JSON object
   *
   * @param service
   * @return
   */
  public static JSONObject serviceParametersAsJson(PsService service) {
    JSONObject serviceParameters = new JSONObject();

    Iterator iter = service.getParameters().keySet().iterator();
    while (iter.hasNext()) {
      String key = (String) iter.next();

      Object value = service.getParameters().get(key);

      // check if parameter name indicates that it is an object id
      if (thisIsObjectId(key)) {
        serviceParameters.put(key, value + "");
      } else {
        serviceParameters.put(key, value);
      }
    }
    return serviceParameters;
  }
  /**
   * Convert perfsonar service to Json object according to specified detail level
   *
   * @param service
   * @return
   */
  public static JSONObject toJson(PsService service, String detailLevel) {

    JSONObject json = new JSONObject();

    if (service != null) {

      json.put(PsService.ID, int2String(service.getId()));
      json.put(PsService.NAME, service.getName());

      if (!PsApi.DETAIL_LEVEL_LOW.equals(detailLevel)) {

        json.put(PsService.TYPE, service.getType());
        json.put(PsService.DESCRIPTION, service.getDescription());

        // add service parameters

        if (service.getParameters() != null) {
          JSONObject serviceParameters = serviceParametersAsJson(service);
          json.put(PsService.PARAMETERS, serviceParameters);
        }

        json.put(PsService.CHECK_INTERVAL, new Integer(service.getCheckInterval()));
        json.put(PsService.RUNNING, service.isRunning());
        json.put(
            PsService.PREV_CHECK_TIME, IsoDateConverter.dateToString(service.getPrevCheckTime()));
        json.put(
            PsService.NEXT_CHECK_TIME, IsoDateConverter.dateToString(service.getNextCheckTime()));
        json.put(PsService.RUNNING_SINCE, IsoDateConverter.dateToString(service.getRunningSince()));
        json.put(PsService.TIMEOUT, service.getTimeout());

        // add result
        PsRecentServiceResult result = service.getResult();
        JSONObject jsonResult = toJson(result);
        json.put(PsService.RESULT, jsonResult);
      }
    }

    return json;
  }