예제 #1
0
  /**
   * Wrap an object, if necessary. If the object is null, return the NULL object. If it is an array
   * or collection, wrap it in a JSONArray. If it is a map, wrap it in a JSONObject. If it is a
   * standard property (Double, String, et al) then it is already wrapped. Otherwise, if it comes
   * from one of the java packages, turn it into a string. And if it doesn't, try to wrap it in a
   * JSONObject. If the wrapping fails, then null is returned.
   *
   * @param object The object to wrap
   * @return The wrapped value
   */
  public static Object wrap(Object object) {
    try {
      if (object == null) {
        return JSONObject.NULL;
      }
      if ((object instanceof JSONObject)
          || (object instanceof JSONArray)
          || JSONObject.NULL.equals(object)
          || (object instanceof JSONString)
          || (object instanceof Byte)
          || (object instanceof Character)
          || (object instanceof Short)
          || (object instanceof Integer)
          || (object instanceof Long)
          || (object instanceof Boolean)
          || (object instanceof Float)
          || (object instanceof Double)
          || (object instanceof String)) {
        return object;
      }

      if (object instanceof Collection) {
        return new JSONArray((Collection) object);
      }
      if (object.getClass().isArray()) {
        return new JSONArray(object);
      }
      if (object instanceof Map) {
        return new JSONObject((Map) object);
      }
      final Package objectPackage = object.getClass().getPackage();
      final String objectPackageName = (objectPackage != null ? objectPackage.getName() : "");
      if (objectPackageName.startsWith("java.")
          || objectPackageName.startsWith("javax.")
          || (object.getClass().getClassLoader() == null)) {
        return object.toString();
      }
      return new JSONObject(object);
    } catch (final Exception exception) {
      return null;
    }
  }
예제 #2
0
 /**
  * Determine if the value associated with the key is null or if there is no value.
  *
  * @param key A key string.
  * @return true if there is no value associated with the key or if the value is the
  *     JSONObject.NULL object.
  */
 public boolean isNull(String key) {
   return JSONObject.NULL.equals(this.opt(key));
 }
예제 #3
0
 /**
  * Get an optional string associated with a key. It returns the defaultValue if there is no such
  * key.
  *
  * @param key A key string.
  * @param defaultValue The default.
  * @return A string which is the value.
  */
 public String optString(String key, String defaultValue) {
   final Object object = this.opt(key);
   return JSONObject.NULL.equals(object) ? defaultValue : object.toString();
 }