Esempio n. 1
0
 /**
  * Accumulate values under a key. It is similar to the put method except that if there is already
  * an object stored under the key then a JSONArray is stored under the key to hold all of the
  * accumulated values. If there is already a JSONArray, then the new value is appended to it. In
  * contrast, the put method replaces the previous value.
  *
  * <p>If only one value is accumulated that is not a JSONArray, then the result will be the same
  * as using put. But if multiple values are accumulated, then the result will be like append.
  *
  * @param key A key string.
  * @param value An object to be accumulated under the key.
  * @return this.
  * @throws JSONException If the value is an invalid number or if the key is null.
  */
 public JSONObject accumulate(String key, Object value) throws JSONException {
   testValidity(value);
   Object object = this.opt(key);
   if (object == null) {
     this.put(key, value instanceof JSONArray ? new JSONArray().put(value) : value);
   } else if (object instanceof JSONArray) {
     ((JSONArray) object).put(value);
   } else {
     this.put(key, new JSONArray().put(object).put(value));
   }
   return this;
 }
Esempio n. 2
0
 /**
  * Append values to the array under a key. If the key does not exist in the JSONObject, then the
  * key is put in the JSONObject with its value being a JSONArray containing the value parameter.
  * If the key was already associated with a JSONArray, then the value parameter is appended to it.
  *
  * @param key A key string.
  * @param value An object to be accumulated under the key.
  * @return this.
  * @throws JSONException If the key is null or if the current value associated with the key is not
  *     a JSONArray.
  */
 public JSONObject append(String key, Object value) throws JSONException {
   testValidity(value);
   Object object = this.opt(key);
   if (object == null) {
     this.put(key, new JSONArray().put(value));
   } else if (object instanceof JSONArray) {
     this.put(key, ((JSONArray) object).put(value));
   } else {
     throw new JSONException("JSONObject[" + key + "] is not a JSONArray.");
   }
   return this;
 }
Esempio n. 3
0
  /**
   * Produce a string from a Number.
   *
   * @param number A Number
   * @return A String.
   * @throws JSONException If n is a non-finite number.
   */
  public static String numberToString(Number number) throws JSONException {
    if (number == null) {
      throw new JSONException("Null pointer");
    }
    testValidity(number);

    // Shave off trailing zeros and decimal point, if possible.

    String string = number.toString();
    if (string.indexOf('.') > 0 && string.indexOf('e') < 0 && string.indexOf('E') < 0) {
      while (string.endsWith("0")) {
        string = string.substring(0, string.length() - 1);
      }
      if (string.endsWith(".")) {
        string = string.substring(0, string.length() - 1);
      }
    }
    return string;
  }
Esempio n. 4
0
 /**
  * Put a key/value pair in the JSONObject. If the value is null, then the key will be removed from
  * the JSONObject if it is present.
  *
  * @param key A key string.
  * @param value An object which is the value. It should be of one of these types: Boolean, Double,
  *     Integer, JSONArray, JSONObject, Long, String, or the JSONObject.NULL object.
  * @return this.
  * @throws JSONException If the value is non-finite number or if the key is null.
  */
 public JSONObject put(String key, Object value) throws JSONException {
   String pooled;
   if (key == null) {
     throw new JSONException("Null key.");
   }
   if (value != null) {
     testValidity(value);
     pooled = (String) keyPool.get(key);
     if (pooled == null) {
       if (keyPool.size() >= keyPoolSize) {
         keyPool = new HashMap(keyPoolSize);
       }
       keyPool.put(key, key);
     } else {
       key = pooled;
     }
     this.map.put(key, value);
   } else {
     this.remove(key);
   }
   return this;
 }