JSONArray (JSON in Java 20240205 API)

Package org.json

## Class JSONArray

- java.lang.Object
- - org.json.JSONArray

- All Implemented Interfaces:
    `Iterable<Object>`

      public class JSONArray
      extends Object
      implements Iterable<Object>

  A JSONArray is an ordered sequence of values. Its external text form is a string wrapped in square brackets with commas separating the values. The internal form is an object having `get` and `opt` methods for accessing the values by index, and `put` methods for adding or replacing values. The values can be any of these types: `Boolean`, `JSONArray`, `JSONObject`, `Number`, `String`, or the `JSONObject.NULL object`.

  The constructor can convert a JSON text into a Java object. The `toString` method converts to JSON text.

  A `get` method returns a value if one can be found, and throws an exception if one cannot be found. An `opt` method returns a default value instead of throwing an exception, and so is useful for obtaining optional values.

  The generic `get()` and `opt()` methods return an object which you can cast or query for type. There are also typed `get` and `opt` methods that do type checking and type coercion for you.

  The texts produced by the `toString` methods strictly conform to JSON syntax rules. The constructors are more forgiving in the texts they will accept:

  - An extra `,` (comma) may appear just before the closing bracket.
  - The `null` value will be inserted when there is `,` (comma) elision.
  - Strings may be quoted with `'` (single quote).
  - Strings do not need to be quoted at all if they do not begin with a quote or single quote, and if they do not contain leading or trailing spaces, and if they do not contain any of these characters: `{ } [ ] / \ : , #` and if they do not look like numbers and if they are not the reserved words `true`, `false`, or `null`.
  Version:
    2016-08/15
  Author:
    JSON.org

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `JSONArray()` | Construct an empty JSONArray.
    `JSONArray​(int initialCapacity)` | Construct a JSONArray with the specified initial capacity.
    `JSONArray​(Iterable<?> iter)` | Construct a JSONArray from an Iterable.
    `JSONArray​(Object array)` | Construct a JSONArray from an array.
    `JSONArray​(String source)` | Construct a JSONArray from a source JSON text.
    `JSONArray​(Collection<?> collection)` | Construct a JSONArray from a Collection.
    `JSONArray​(Collection<?> collection, JSONParserConfiguration jsonParserConfiguration)` | Construct a JSONArray from a Collection.
    `JSONArray​(JSONArray array)` | Construct a JSONArray from another JSONArray.
    `JSONArray​(JSONTokener x)` | Construct a JSONArray from a JSONTokener.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `clear()` | Removes all of the elements from this JSONArray.
    `Object` | `get​(int index)` | Get the object value associated with an index.
    `BigDecimal` | `getBigDecimal​(int index)` | Get the BigDecimal value associated with an index.
    `BigInteger` | `getBigInteger​(int index)` | Get the BigInteger value associated with an index.
    `boolean` | `getBoolean​(int index)` | Get the boolean value associated with an index.
    `double` | `getDouble​(int index)` | Get the double value associated with an index.
    `<E extends Enum<E>> E` | `getEnum​(Class<E> clazz, int index)` | Get the enum value associated with an index.
    `float` | `getFloat​(int index)` | Get the float value associated with a key.
    `int` | `getInt​(int index)` | Get the int value associated with an index.
    `JSONArray` | `getJSONArray​(int index)` | Get the JSONArray associated with an index.
    `JSONObject` | `getJSONObject​(int index)` | Get the JSONObject associated with an index.
    `long` | `getLong​(int index)` | Get the long value associated with an index.
    `Number` | `getNumber​(int index)` | Get the Number value associated with a key.
    `String` | `getString​(int index)` | Get the string associated with an index.
    `boolean` | `isEmpty()` | Check if JSONArray is empty.
    `boolean` | `isNull​(int index)` | Determine if the value is `null`.
    `Iterator<Object>` | `iterator()` |
    `String` | `join​(String separator)` | Make a string from the contents of this JSONArray.
    `int` | `length()` | Get the number of elements in the JSONArray, included nulls.
    `Object` | `opt​(int index)` | Get the optional object value associated with an index.
    `BigDecimal` | `optBigDecimal​(int index, BigDecimal defaultValue)` | Get the optional BigDecimal value associated with an index.
    `BigInteger` | `optBigInteger​(int index, BigInteger defaultValue)` | Get the optional BigInteger value associated with an index.
    `boolean` | `optBoolean​(int index)` | Get the optional boolean value associated with an index.
    `boolean` | `optBoolean​(int index, boolean defaultValue)` | Get the optional boolean value associated with an index.
    `Boolean` | `optBooleanObject​(int index)` | Get the optional Boolean object associated with an index.
    `Boolean` | `optBooleanObject​(int index, Boolean defaultValue)` | Get the optional Boolean object associated with an index.
    `double` | `optDouble​(int index)` | Get the optional double value associated with an index.
    `double` | `optDouble​(int index, double defaultValue)` | Get the optional double value associated with an index.
    `Double` | `optDoubleObject​(int index)` | Get the optional Double object associated with an index.
    `Double` | `optDoubleObject​(int index, Double defaultValue)` | Get the optional double value associated with an index.
    `<E extends Enum<E>> E` | `optEnum​(Class<E> clazz, int index)` | Get the enum value associated with a key.
    `<E extends Enum<E>> E` | `optEnum​(Class<E> clazz, int index, E defaultValue)` | Get the enum value associated with a key.
    `float` | `optFloat​(int index)` | Get the optional float value associated with an index.
    `float` | `optFloat​(int index, float defaultValue)` | Get the optional float value associated with an index.
    `Float` | `optFloatObject​(int index)` | Get the optional Float object associated with an index.
    `Float` | `optFloatObject​(int index, Float defaultValue)` | Get the optional Float object associated with an index.
    `int` | `optInt​(int index)` | Get the optional int value associated with an index.
    `int` | `optInt​(int index, int defaultValue)` | Get the optional int value associated with an index.
    `Integer` | `optIntegerObject​(int index)` | Get the optional Integer object associated with an index.
    `Integer` | `optIntegerObject​(int index, Integer defaultValue)` | Get the optional Integer object associated with an index.
    `JSONArray` | `optJSONArray​(int index)` | Get the optional JSONArray associated with an index.
    `JSONArray` | `optJSONArray​(int index, JSONArray defaultValue)` | Get the optional JSONArray associated with an index.
    `JSONObject` | `optJSONObject​(int index)` | Get the optional JSONObject associated with an index.
    `JSONObject` | `optJSONObject​(int index, JSONObject defaultValue)` | Get the optional JSONObject associated with an index.
    `long` | `optLong​(int index)` | Get the optional long value associated with an index.
    `long` | `optLong​(int index, long defaultValue)` | Get the optional long value associated with an index.
    `Long` | `optLongObject​(int index)` | Get the optional Long object associated with an index.
    `Long` | `optLongObject​(int index, Long defaultValue)` | Get the optional Long object associated with an index.
    `Number` | `optNumber​(int index)` | Get an optional `Number` value associated with a key, or `null` if there is no such key or if the value is not a number.
    `Number` | `optNumber​(int index, Number defaultValue)` | Get an optional `Number` value associated with a key, or the default if there is no such key or if the value is not a number.
    `Object` | `optQuery​(String jsonPointer)` | Queries and returns a value from this object using `jsonPointer`, or returns null if the query fails due to a missing key.
    `Object` | `optQuery​(JSONPointer jsonPointer)` | Queries and returns a value from this object using `jsonPointer`, or returns null if the query fails due to a missing key.
    `String` | `optString​(int index)` | Get the optional string value associated with an index.
    `String` | `optString​(int index, String defaultValue)` | Get the optional string associated with an index.
    `JSONArray` | `put​(boolean value)` | Append a boolean value.
    `JSONArray` | `put​(double value)` | Append a double value.
    `JSONArray` | `put​(float value)` | Append a float value.
    `JSONArray` | `put​(int value)` | Append an int value.
    `JSONArray` | `put​(int index, boolean value)` | Put or replace a boolean value in the JSONArray.
    `JSONArray` | `put​(int index, double value)` | Put or replace a double value.
    `JSONArray` | `put​(int index, float value)` | Put or replace a float value.
    `JSONArray` | `put​(int index, int value)` | Put or replace an int value.
    `JSONArray` | `put​(int index, long value)` | Put or replace a long value.
    `JSONArray` | `put​(int index, Object value)` | Put or replace an object value in the JSONArray.
    `JSONArray` | `put​(int index, Collection<?> value)` | Put a value in the JSONArray, where the value will be a JSONArray which is produced from a Collection.
    `JSONArray` | `put​(int index, Map<?,​?> value)` | Put a value in the JSONArray, where the value will be a JSONObject that is produced from a Map.
    `JSONArray` | `put​(int index, Map<?,​?> value, JSONParserConfiguration jsonParserConfiguration)` | Put a value in the JSONArray, where the value will be a JSONObject that is produced from a Map.
    `JSONArray` | `put​(long value)` | Append an long value.
    `JSONArray` | `put​(Object value)` | Append an object value.
    `JSONArray` | `put​(Collection<?> value)` | Put a value in the JSONArray, where the value will be a JSONArray which is produced from a Collection.
    `JSONArray` | `put​(Map<?,​?> value)` | Put a value in the JSONArray, where the value will be a JSONObject which is produced from a Map.
    `JSONArray` | `putAll​(Iterable<?> iter)` | Put an Iterable's elements in to the JSONArray.
    `JSONArray` | `putAll​(Object array)` | Put an array's elements in to the JSONArray.
    `JSONArray` | `putAll​(Collection<?> collection)` | Put a collection's elements in to the JSONArray.
    `JSONArray` | `putAll​(JSONArray array)` | Put a JSONArray's elements in to the JSONArray.
    `Object` | `query​(String jsonPointer)` | Creates a JSONPointer using an initialization string and tries to match it to an item within this JSONArray.
    `Object` | `query​(JSONPointer jsonPointer)` | Uses a user initialized JSONPointer and tries to match it to an item within this JSONArray.
    `Object` | `remove​(int index)` | Remove an index and close the hole.
    `boolean` | `similar​(Object other)` | Determine if two JSONArrays are similar.
    `JSONObject` | `toJSONObject​(JSONArray names)` | Produce a JSONObject by combining a JSONArray of names with the values of this JSONArray.
    `List<Object>` | `toList()` | Returns a java.util.List containing all of the elements in this array.
    `String` | `toString()` | Make a JSON text of this JSONArray.
    `String` | `toString​(int indentFactor)` | Make a pretty-printed JSON text of this JSONArray.
    `Writer` | `write​(Writer writer)` | Write the contents of the JSONArray as JSON text to a writer.
    `Writer` | `write​(Writer writer, int indentFactor, int indent)` | Write the contents of the JSONArray as JSON text to a writer.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Constructor Detail

    - #### JSONArray

          public JSONArray()

      Construct an empty JSONArray.

    - #### JSONArray

          public JSONArray​(JSONTokener x)
                    throws JSONException

      Construct a JSONArray from a JSONTokener.
      Parameters:
        `x` - A JSONTokener
      Throws:
        `JSONException` - If there is a syntax error.

    - #### JSONArray

          public JSONArray​(String source)
                    throws JSONException

      Construct a JSONArray from a source JSON text.
      Parameters:
        `source` - A string that begins with `[` (left bracket) and ends with `]` (right bracket).
      Throws:
        `JSONException` - If there is a syntax error.

    - #### JSONArray

          public JSONArray​(Collection<?> collection)

      Construct a JSONArray from a Collection.
      Parameters:
        `collection` - A Collection.

    - #### JSONArray

          public JSONArray​(Collection<?> collection,
                           JSONParserConfiguration jsonParserConfiguration)

      Construct a JSONArray from a Collection.
      Parameters:
        `collection` - A Collection.
        `jsonParserConfiguration` - Configuration object for the JSON parser

    - #### JSONArray

          public JSONArray​(Iterable<?> iter)

      Construct a JSONArray from an Iterable. This is a shallow copy.
      Parameters:
        `iter` - A Iterable collection.

    - #### JSONArray

          public JSONArray​(JSONArray array)

      Construct a JSONArray from another JSONArray. This is a shallow copy.
      Parameters:
        `array` - A array.

    - #### JSONArray

          public JSONArray​(Object array)
                    throws JSONException

      Construct a JSONArray from an array.
      Parameters:
        `array` - Array. If the parameter passed is null, or not an array, an exception will be thrown.
      Throws:
        `JSONException` - If not an array or if an array value is non-finite number.
        `NullPointerException` - Thrown if the array parameter is null.

    - #### JSONArray

          public JSONArray​(int initialCapacity)
                    throws JSONException

      Construct a JSONArray with the specified initial capacity.
      Parameters:
        `initialCapacity` - the initial capacity of the JSONArray.
      Throws:
        `JSONException` - If the initial capacity is negative.

  - ### Method Detail

    - #### iterator

          public Iterator<Object> iterator()

      Specified by:
        `iterator` in interface `Iterable<Object>`

    - #### get

          public Object get​(int index)
                     throws JSONException

      Get the object value associated with an index.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        An object value.
      Throws:
        `JSONException` - If there is no value for the index.

    - #### getBoolean

          public boolean getBoolean​(int index)
                             throws JSONException

      Get the boolean value associated with an index. The string values "true" and "false" are converted to boolean.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The truth.
      Throws:
        `JSONException` - If there is no value for the index or if the value is not convertible to boolean.

    - #### getDouble

          public double getDouble​(int index)
                           throws JSONException

      Get the double value associated with an index.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The value.
      Throws:
        `JSONException` - If the key is not found or if the value cannot be converted to a number.

    - #### getFloat

          public float getFloat​(int index)
                         throws JSONException

      Get the float value associated with a key.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The numeric value.
      Throws:
        `JSONException` - if the key is not found or if the value is not a Number object and cannot be converted to a number.

    - #### getNumber

          public Number getNumber​(int index)
                           throws JSONException

      Get the Number value associated with a key.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The numeric value.
      Throws:
        `JSONException` - if the key is not found or if the value is not a Number object and cannot be converted to a number.

    - #### getEnum

          public <E extends Enum<E>> E getEnum​(Class<E> clazz,
                                               int index)
                                        throws JSONException

      Get the enum value associated with an index.
      Type Parameters:
        `E` - Enum Type
      Parameters:
        `clazz` - The type of enum to retrieve.
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The enum value at the index location
      Throws:
        `JSONException` - if the key is not found or if the value cannot be converted to an enum.

    - #### getBigDecimal

          public BigDecimal getBigDecimal​(int index)
                                   throws JSONException

      Get the BigDecimal value associated with an index. If the value is float or double, the `BigDecimal(double)` constructor will be used. See notes on the constructor for conversion issues that may arise.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The value.
      Throws:
        `JSONException` - If the key is not found or if the value cannot be converted to a BigDecimal.

    - #### getBigInteger

          public BigInteger getBigInteger​(int index)
                                   throws JSONException

      Get the BigInteger value associated with an index.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The value.
      Throws:
        `JSONException` - If the key is not found or if the value cannot be converted to a BigInteger.

    - #### getInt

          public int getInt​(int index)
                     throws JSONException

      Get the int value associated with an index.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The value.
      Throws:
        `JSONException` - If the key is not found or if the value is not a number.

    - #### getJSONArray

          public JSONArray getJSONArray​(int index)
                                 throws JSONException

      Get the JSONArray associated with an index.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        A JSONArray value.
      Throws:
        `JSONException` - If there is no value for the index. or if the value is not a JSONArray

    - #### getJSONObject

          public JSONObject getJSONObject​(int index)
                                   throws JSONException

      Get the JSONObject associated with an index.
      Parameters:
        `index` - subscript
      Returns:
        A JSONObject value.
      Throws:
        `JSONException` - If there is no value for the index or if the value is not a JSONObject

    - #### getLong

          public long getLong​(int index)
                       throws JSONException

      Get the long value associated with an index.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The value.
      Throws:
        `JSONException` - If the key is not found or if the value cannot be converted to a number.

    - #### getString

          public String getString​(int index)
                           throws JSONException

      Get the string associated with an index.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        A string value.
      Throws:
        `JSONException` - If there is no string value for the index.

    - #### isNull

          public boolean isNull​(int index)

      Determine if the value is `null`.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        true if the value at the index is `null`, or if there is no value.

    - #### join

          public String join​(String separator)
                      throws JSONException

      Make a string from the contents of this JSONArray. The `separator` string is inserted between each element. Warning: This method assumes that the data structure is acyclical.
      Parameters:
        `separator` - A string that will be inserted between the elements.
      Returns:
        a string.
      Throws:
        `JSONException` - If the array contains an invalid number.

    - #### length

          public int length()

      Get the number of elements in the JSONArray, included nulls.
      Returns:
        The length (or size).

    - #### clear

          public void clear()

      Removes all of the elements from this JSONArray. The JSONArray will be empty after this call returns.

    - #### opt

          public Object opt​(int index)

      Get the optional object value associated with an index.
      Parameters:
        `index` - The index must be between 0 and length() - 1. If not, null is returned.
      Returns:
        An object value, or null if there is no object at that index.

    - #### optBoolean

          public boolean optBoolean​(int index)

      Get the optional boolean value associated with an index. It returns false if there is no value at that index, or if the value is not Boolean.TRUE or the String "true".
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The truth.

    - #### optBoolean

          public boolean optBoolean​(int index,
                                    boolean defaultValue)

      Get the optional boolean value associated with an index. It returns the defaultValue if there is no value at that index or if it is not a Boolean or the String "true" or "false" (case insensitive).
      Parameters:
        `index` - The index must be between 0 and length() - 1.
        `defaultValue` - A boolean default.
      Returns:
        The truth.

    - #### optBooleanObject

          public Boolean optBooleanObject​(int index)

      Get the optional Boolean object associated with an index. It returns false if there is no value at that index, or if the value is not Boolean.TRUE or the String "true".
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The truth.

    - #### optBooleanObject

          public Boolean optBooleanObject​(int index,
                                          Boolean defaultValue)

      Get the optional Boolean object associated with an index. It returns the defaultValue if there is no value at that index or if it is not a Boolean or the String "true" or "false" (case insensitive).
      Parameters:
        `index` - The index must be between 0 and length() - 1.
        `defaultValue` - A boolean default.
      Returns:
        The truth.

    - #### optDouble

          public double optDouble​(int index)

      Get the optional double value associated with an index. NaN is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The value.

    - #### optDouble

          public double optDouble​(int index,
                                  double defaultValue)

      Get the optional double value associated with an index. The defaultValue is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - subscript
        `defaultValue` - The default value.
      Returns:
        The value.

    - #### optDoubleObject

          public Double optDoubleObject​(int index)

      Get the optional Double object associated with an index. NaN is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The object.

    - #### optDoubleObject

          public Double optDoubleObject​(int index,
                                        Double defaultValue)

      Get the optional double value associated with an index. The defaultValue is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - subscript
        `defaultValue` - The default object.
      Returns:
        The object.

    - #### optFloat

          public float optFloat​(int index)

      Get the optional float value associated with an index. NaN is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The value.

    - #### optFloat

          public float optFloat​(int index,
                                float defaultValue)

      Get the optional float value associated with an index. The defaultValue is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - subscript
        `defaultValue` - The default value.
      Returns:
        The value.

    - #### optFloatObject

          public Float optFloatObject​(int index)

      Get the optional Float object associated with an index. NaN is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The object.

    - #### optFloatObject

          public Float optFloatObject​(int index,
                                      Float defaultValue)

      Get the optional Float object associated with an index. The defaultValue is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - subscript
        `defaultValue` - The default object.
      Returns:
        The object.

    - #### optInt

          public int optInt​(int index)

      Get the optional int value associated with an index. Zero is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The value.

    - #### optInt

          public int optInt​(int index,
                            int defaultValue)

      Get the optional int value associated with an index. The defaultValue is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
        `defaultValue` - The default value.
      Returns:
        The value.

    - #### optIntegerObject

          public Integer optIntegerObject​(int index)

      Get the optional Integer object associated with an index. Zero is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The object.

    - #### optIntegerObject

          public Integer optIntegerObject​(int index,
                                          Integer defaultValue)

      Get the optional Integer object associated with an index. The defaultValue is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
        `defaultValue` - The default object.
      Returns:
        The object.

    - #### optEnum

          public <E extends Enum<E>> E optEnum​(Class<E> clazz,
                                               int index)

      Get the enum value associated with a key.
      Type Parameters:
        `E` - Enum Type
      Parameters:
        `clazz` - The type of enum to retrieve.
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The enum value at the index location or null if not found

    - #### optEnum

          public <E extends Enum<E>> E optEnum​(Class<E> clazz,
                                               int index,
                                               E defaultValue)

      Get the enum value associated with a key.
      Type Parameters:
        `E` - Enum Type
      Parameters:
        `clazz` - The type of enum to retrieve.
        `index` - The index must be between 0 and length() - 1.
        `defaultValue` - The default in case the value is not found
      Returns:
        The enum value at the index location or defaultValue if the value is not found or cannot be assigned to clazz

    - #### optBigInteger

          public BigInteger optBigInteger​(int index,
                                          BigInteger defaultValue)

      Get the optional BigInteger value associated with an index. The defaultValue is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
        `defaultValue` - The default value.
      Returns:
        The value.

    - #### optBigDecimal

          public BigDecimal optBigDecimal​(int index,
                                          BigDecimal defaultValue)

      Get the optional BigDecimal value associated with an index. The defaultValue is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number. If the value is float or double, the `BigDecimal(double)` constructor will be used. See notes on the constructor for conversion issues that may arise.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
        `defaultValue` - The default value.
      Returns:
        The value.

    - #### optJSONArray

          public JSONArray optJSONArray​(int index)

      Get the optional JSONArray associated with an index. Null is returned if there is no value at that index or if the value is not a JSONArray.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        A JSONArray value.

    - #### optJSONArray

          public JSONArray optJSONArray​(int index,
                                        JSONArray defaultValue)

      Get the optional JSONArray associated with an index. The defaultValue is returned if there is no value at that index or if the value is not a JSONArray.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
        `defaultValue` - The default.
      Returns:
        A JSONArray value.

    - #### optJSONObject

          public JSONObject optJSONObject​(int index)

      Get the optional JSONObject associated with an index. Null is returned if there is no value at that index or if the value is not a JSONObject.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        A JSONObject value.

    - #### optJSONObject

          public JSONObject optJSONObject​(int index,
                                          JSONObject defaultValue)

      Get the optional JSONObject associated with an index. The defaultValue is returned if there is no value at that index or if the value is not a JSONObject.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
        `defaultValue` - The default.
      Returns:
        A JSONObject value.

    - #### optLong

          public long optLong​(int index)

      Get the optional long value associated with an index. Zero is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The value.

    - #### optLong

          public long optLong​(int index,
                              long defaultValue)

      Get the optional long value associated with an index. The defaultValue is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
        `defaultValue` - The default value.
      Returns:
        The value.

    - #### optLongObject

          public Long optLongObject​(int index)

      Get the optional Long object associated with an index. Zero is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        The object.

    - #### optLongObject

          public Long optLongObject​(int index,
                                    Long defaultValue)

      Get the optional Long object associated with an index. The defaultValue is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
        `defaultValue` - The default object.
      Returns:
        The object.

    - #### optNumber

          public Number optNumber​(int index)

      Get an optional `Number` value associated with a key, or `null` if there is no such key or if the value is not a number. If the value is a string, an attempt will be made to evaluate it as a number (`BigDecimal`). This method would be used in cases where type coercion of the number value is unwanted.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        An object which is the value.

    - #### optNumber

          public Number optNumber​(int index,
                                  Number defaultValue)

      Get an optional `Number` value associated with a key, or the default if there is no such key or if the value is not a number. If the value is a string, an attempt will be made to evaluate it as a number (`BigDecimal`). This method would be used in cases where type coercion of the number value is unwanted.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
        `defaultValue` - The default.
      Returns:
        An object which is the value.

    - #### optString

          public String optString​(int index)

      Get the optional string value associated with an index. It returns an empty string if there is no value at that index. If the value is not a string and is not null, then it is converted to a string.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
      Returns:
        A String value.

    - #### optString

          public String optString​(int index,
                                  String defaultValue)

      Get the optional string associated with an index. The defaultValue is returned if the key is not found.
      Parameters:
        `index` - The index must be between 0 and length() - 1.
        `defaultValue` - The default value.
      Returns:
        A String value.

    - #### put

          public JSONArray put​(boolean value)

      Append a boolean value. This increases the array's length by one.
      Parameters:
        `value` - A boolean value.
      Returns:
        this.

    - #### put

          public JSONArray put​(Collection<?> value)

      Put a value in the JSONArray, where the value will be a JSONArray which is produced from a Collection.
      Parameters:
        `value` - A Collection value.
      Returns:
        this.
      Throws:
        `JSONException` - If the value is non-finite number.

    - #### put

          public JSONArray put​(double value)
                        throws JSONException

      Append a double value. This increases the array's length by one.
      Parameters:
        `value` - A double value.
      Returns:
        this.
      Throws:
        `JSONException` - if the value is not finite.

    - #### put

          public JSONArray put​(float value)
                        throws JSONException

      Append a float value. This increases the array's length by one.
      Parameters:
        `value` - A float value.
      Returns:
        this.
      Throws:
        `JSONException` - if the value is not finite.

    - #### put

          public JSONArray put​(int value)

      Append an int value. This increases the array's length by one.
      Parameters:
        `value` - An int value.
      Returns:
        this.

    - #### put

          public JSONArray put​(long value)

      Append an long value. This increases the array's length by one.
      Parameters:
        `value` - A long value.
      Returns:
        this.

    - #### put

          public JSONArray put​(Map<?,​?> value)

      Put a value in the JSONArray, where the value will be a JSONObject which is produced from a Map.
      Parameters:
        `value` - A Map value.
      Returns:
        this.
      Throws:
        `JSONException` - If a value in the map is non-finite number.
        `NullPointerException` - If a key in the map is `null`

    - #### put

          public JSONArray put​(Object value)

      Append an object value. This increases the array's length by one.
      Parameters:
        `value` - An object value. The value should be a Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object.
      Returns:
        this.
      Throws:
        `JSONException` - If the value is non-finite number.

    - #### put

          public JSONArray put​(int index,
                               boolean value)
                        throws JSONException

      Put or replace a boolean value in the JSONArray. If the index is greater than the length of the JSONArray, then null elements will be added as necessary to pad it out.
      Parameters:
        `index` - The subscript.
        `value` - A boolean value.
      Returns:
        this.
      Throws:
        `JSONException` - If the index is negative.

    - #### put

          public JSONArray put​(int index,
                               Collection<?> value)
                        throws JSONException

      Put a value in the JSONArray, where the value will be a JSONArray which is produced from a Collection.
      Parameters:
        `index` - The subscript.
        `value` - A Collection value.
      Returns:
        this.
      Throws:
        `JSONException` - If the index is negative or if the value is non-finite.

    - #### put

          public JSONArray put​(int index,
                               double value)
                        throws JSONException

      Put or replace a double value. If the index is greater than the length of the JSONArray, then null elements will be added as necessary to pad it out.
      Parameters:
        `index` - The subscript.
        `value` - A double value.
      Returns:
        this.
      Throws:
        `JSONException` - If the index is negative or if the value is non-finite.

    - #### put

          public JSONArray put​(int index,
                               float value)
                        throws JSONException

      Put or replace a float value. If the index is greater than the length of the JSONArray, then null elements will be added as necessary to pad it out.
      Parameters:
        `index` - The subscript.
        `value` - A float value.
      Returns:
        this.
      Throws:
        `JSONException` - If the index is negative or if the value is non-finite.

    - #### put

          public JSONArray put​(int index,
                               int value)
                        throws JSONException

      Put or replace an int value. If the index is greater than the length of the JSONArray, then null elements will be added as necessary to pad it out.
      Parameters:
        `index` - The subscript.
        `value` - An int value.
      Returns:
        this.
      Throws:
        `JSONException` - If the index is negative.

    - #### put

          public JSONArray put​(int index,
                               long value)
                        throws JSONException

      Put or replace a long value. If the index is greater than the length of the JSONArray, then null elements will be added as necessary to pad it out.
      Parameters:
        `index` - The subscript.
        `value` - A long value.
      Returns:
        this.
      Throws:
        `JSONException` - If the index is negative.

    - #### put

          public JSONArray put​(int index,
                               Map<?,​?> value)
                        throws JSONException

      Put a value in the JSONArray, where the value will be a JSONObject that is produced from a Map.
      Parameters:
        `index` - The subscript.
        `value` - The Map value.
      Returns:
        reference to self
      Throws:
        `JSONException` - If the index is negative or if the value is an invalid number.
        `NullPointerException` - If a key in the map is `null`

    - #### put

          public JSONArray put​(int index,
                               Map<?,​?> value,
                               JSONParserConfiguration jsonParserConfiguration)
                        throws JSONException

      Put a value in the JSONArray, where the value will be a JSONObject that is produced from a Map.
      Parameters:
        `index` - The subscript
        `value` - The Map value.
        `jsonParserConfiguration` - Configuration object for the JSON parser
      Returns:
        reference to self
      Throws:
        `JSONException` - If the index is negative or if the value is an invalid number.

    - #### put

          public JSONArray put​(int index,
                               Object value)
                        throws JSONException

      Put or replace an object value in the JSONArray. If the index is greater than the length of the JSONArray, then null elements will be added as necessary to pad it out.
      Parameters:
        `index` - The subscript.
        `value` - The value to put into the array. The value should be a Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object.
      Returns:
        this.
      Throws:
        `JSONException` - If the index is negative or if the value is an invalid number.

    - #### putAll

          public JSONArray putAll​(Collection<?> collection)

      Put a collection's elements in to the JSONArray.
      Parameters:
        `collection` - A Collection.
      Returns:
        this.

    - #### putAll

          public JSONArray putAll​(Iterable<?> iter)

      Put an Iterable's elements in to the JSONArray.
      Parameters:
        `iter` - An Iterable.
      Returns:
        this.

    - #### putAll

          public JSONArray putAll​(JSONArray array)

      Put a JSONArray's elements in to the JSONArray.
      Parameters:
        `array` - A JSONArray.
      Returns:
        this.

    - #### putAll

          public JSONArray putAll​(Object array)
                           throws JSONException

      Put an array's elements in to the JSONArray.
      Parameters:
        `array` - Array. If the parameter passed is null, or not an array or Iterable, an exception will be thrown.
      Returns:
        this.
      Throws:
        `JSONException` - If not an array, JSONArray, Iterable or if an value is non-finite number.
        `NullPointerException` - Thrown if the array parameter is null.

    - #### query

          public Object query​(String jsonPointer)

      Creates a JSONPointer using an initialization string and tries to match it to an item within this JSONArray. For example, given a JSONArray initialized with this document:

           [
               {"b":"c"}
           ]

      and this JSONPointer string:

           "/0/b"

      Then this method will return the String "c" A JSONPointerException may be thrown from code called by this method.
      Parameters:
        `jsonPointer` - string that can be used to create a JSONPointer
      Returns:
        the item matched by the JSONPointer, otherwise null

    - #### query

          public Object query​(JSONPointer jsonPointer)

      Uses a user initialized JSONPointer and tries to match it to an item within this JSONArray. For example, given a JSONArray initialized with this document:

           [
               {"b":"c"}
           ]

      and this JSONPointer:

           "/0/b"

      Then this method will return the String "c" A JSONPointerException may be thrown from code called by this method.
      Parameters:
        `jsonPointer` - string that can be used to create a JSONPointer
      Returns:
        the item matched by the JSONPointer, otherwise null

    - #### optQuery

          public Object optQuery​(String jsonPointer)

      Queries and returns a value from this object using `jsonPointer`, or returns null if the query fails due to a missing key.
      Parameters:
        `jsonPointer` - the string representation of the JSON pointer
      Returns:
        the queried value or `null`
      Throws:
        `IllegalArgumentException` - if `jsonPointer` has invalid syntax

    - #### optQuery

          public Object optQuery​(JSONPointer jsonPointer)

      Queries and returns a value from this object using `jsonPointer`, or returns null if the query fails due to a missing key.
      Parameters:
        `jsonPointer` - The JSON pointer
      Returns:
        the queried value or `null`
      Throws:
        `IllegalArgumentException` - if `jsonPointer` has invalid syntax

    - #### remove

          public Object remove​(int index)

      Remove an index and close the hole.
      Parameters:
        `index` - The index of the element to be removed.
      Returns:
        The value that was associated with the index, or null if there was no value.

    - #### similar

          public boolean similar​(Object other)

      Determine if two JSONArrays are similar. They must contain similar sequences.
      Parameters:
        `other` - The other JSONArray
      Returns:
        true if they are equal

    - #### toJSONObject

          public JSONObject toJSONObject​(JSONArray names)
                                  throws JSONException

      Produce a JSONObject by combining a JSONArray of names with the values of this JSONArray.
      Parameters:
        `names` - A JSONArray containing a list of key strings. These will be paired with the values.
      Returns:
        A JSONObject, or null if there are no names or if this JSONArray has no values.
      Throws:
        `JSONException` - If any of the names are null.

    - #### toString

          public String toString()

      Make a JSON text of this JSONArray. For compactness, no unnecessary whitespace is added. If it is not possible to produce a syntactically correct JSON text then null will be returned instead. This could occur if the array contains an invalid number.

      Warning: This method assumes that the data structure is acyclical.

      Overrides:
        `toString` in class `Object`
      Returns:
        a printable, displayable, transmittable representation of the array.

    - #### toString

          public String toString​(int indentFactor)
                          throws JSONException

      Make a pretty-printed JSON text of this JSONArray.

      If

           indentFactor > 0

      and the `JSONArray` has only one element, then the array will be output on a single line:

          [1]

      If an array has 2 or more elements, then it will be output across multiple lines:

           [
           1,
           "value 2",
           3
           ]

      Warning: This method assumes that the data structure is acyclical.

      Parameters:
        `indentFactor` - The number of spaces to add to each level of indentation.
      Returns:
        a printable, displayable, transmittable representation of the object, beginning with `[` (left bracket) and ending with `]` (right bracket).
      Throws:
        `JSONException` - if a called function fails

    - #### write

          public Writer write​(Writer writer)
                       throws JSONException

      Write the contents of the JSONArray as JSON text to a writer. For compactness, no whitespace is added.

      Warning: This method assumes that the data structure is acyclical.

      Parameters:
        `writer` - the writer object
      Returns:
        The writer.
      Throws:
        `JSONException` - if a called function fails

    - #### write

          public Writer write​(Writer writer,
                              int indentFactor,
                              int indent)
                       throws JSONException

      Write the contents of the JSONArray as JSON text to a writer.

      If

          indentFactor > 0

      and the `JSONArray` has only one element, then the array will be output on a single line:

          [1]

      If an array has 2 or more elements, then it will be output across multiple lines:

           [
           1,
           "value 2",
           3
           ]

      Warning: This method assumes that the data structure is acyclical.

      Parameters:
        `writer` - Writes the serialized JSON
        `indentFactor` - The number of spaces to add to each level of indentation.
        `indent` - The indentation of the top level.
      Returns:
        The writer.
      Throws:
        `JSONException` - if a called function fails or unable to write

    - #### toList

          public List<Object> toList()

      Returns a java.util.List containing all of the elements in this array. If an element in the array is a JSONArray or JSONObject it will also be converted to a List and a Map respectively.

      Warning: This method assumes that the data structure is acyclical.

      Returns:
        a java.util.List containing the elements of this array

    - #### isEmpty

          public boolean isEmpty()

      Check if JSONArray is empty.
      Returns:
        true if JSONArray is empty, otherwise false.