/** * Get the enum value associated with a key. * * @param clazz The type of enum to retrieve. * @param index The index must be between 0 and length() - 1. * @param defaultValue The default in case the value is not found * @return The enum value at the index location or defaultValue if the value is not found or * cannot be assigned to clazz */ public <E extends Enum<E>> E optEnum(Class<E> clazz, int index, E defaultValue) { try { Object val = this.opt(index); if (JSONObject.NULL.equals(val)) { return defaultValue; } if (clazz.isAssignableFrom(val.getClass())) { // we just checked it! @SuppressWarnings("unchecked") E myE = (E) val; return myE; } return Enum.valueOf(clazz, val.toString()); } catch (IllegalArgumentException | NullPointerException e) { return defaultValue; } }
/** * 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; } }
/** * 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(opt(key)); }
/** * Get the optional string associated with an index. The defaultValue is returned if the key is * not found. * * @param index The index must be between 0 and length() - 1. * @param defaultValue The default value. * @return A String value. */ public String optString(int index, String defaultValue) { Object object = this.opt(index); return JSONObject.NULL.equals(object) ? defaultValue : object.toString(); }
/** * Determine if the value is null. * * @param index The index must be between 0 and length() - 1. * @return true if the value at the index is null, or if there is no value. */ public boolean isNull(int index) { return JSONObject.NULL.equals(this.opt(index)); }
/** * 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(); }
/** * Determine if the value is null. * * @param index The index must be between 0 and length() - 1. * @return true if the value at the index is null, or if there is no value. */ public boolean isNull(final int index) { return JSONObject.NULL.equals(opt(index)); }
public boolean isNull(int paramInt) { return JSONObject.NULL.equals(opt(paramInt)); }