org.json.simple

## Class JsonArray

- java.lang.Object
- - java.util.AbstractCollection<E>
  - - java.util.AbstractList<E>
    - - java.util.ArrayList<Object>
      - - org.json.simple.JsonArray

- All Implemented Interfaces:
    Serializable, Cloneable, Iterable<Object>, Collection<Object>, List<Object>, RandomAccess, Jsonable

      public class JsonArray
      extends ArrayList<Object>
      implements Jsonable

  JsonArray is a common non-thread safe data format for a collection of data. The contents of a JsonArray are only validated as JSON values on serialization. Meaning all values added to a JsonArray must be recognized by the Jsoner for it to be a true 'JsonArray', so it is really a JsonableArrayList that will serialize to a JsonArray if all of its contents are valid JSON.
  See Also:
    `Jsoner`, Serialized Form

- - ### Field Summary

    - ### Fields inherited from class java.util.AbstractList

      `modCount`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JsonArray()` Instantiates an empty JsonArray.
    `JsonArray(Collection<?> collection)` Instantiate a new JsonArray using ArrayList's constructor of the same type.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `<T> void` | `asCollection(Collection<T> destination)` A convenience method that assumes every element of the JsonArray is castable to T before adding it to a collection of Ts.
    `BigDecimal` | `getBigDecimal(int index)` A convenience method that assumes there is a BigDecimal, Number, or String at the given index.
    `Boolean` | `getBoolean(int index)` A convenience method that assumes there is a Boolean or String value at the given index.
    `Byte` | `getByte(int index)` A convenience method that assumes there is a Number or String value at the given index.
    `<T extends Collection<?>> T` | `getCollection(int index)` A convenience method that assumes there is a Collection value at the given index.
    `Double` | `getDouble(int index)` A convenience method that assumes there is a Number or String value at the given index.
    `Float` | `getFloat(int index)` A convenience method that assumes there is a Number or String value at the given index.
    `Integer` | `getInteger(int index)` A convenience method that assumes there is a Number or String value at the given index.
    `Long` | `getLong(int index)` A convenience method that assumes there is a Number or String value at the given index.
    `<T extends Map<?,?>> T` | `getMap(int index)` A convenience method that assumes there is a Map value at the given index.
    `Short` | `getShort(int index)` A convenience method that assumes there is a Number or String value at the given index.
    `String` | `getString(int index)` A convenience method that assumes there is a Boolean, Number, or String value at the given index.
    `String` | `toJson()` Serialize to a JSON formatted string.
    `void` | `toJson(Writer writable)` Serialize to a JSON formatted stream.

    - ### Methods inherited from class java.util.ArrayList

      `add, add, addAll, addAll, clear, clone, contains, ensureCapacity, forEach, get, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, removeIf, removeRange, replaceAll, retainAll, set, size, sort, spliterator, subList, toArray, toArray, trimToSize`

    - ### Methods inherited from class java.util.AbstractList

      `equals, hashCode`

    - ### Methods inherited from class java.util.AbstractCollection

      `containsAll, toString`

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

      `finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.util.List

      `containsAll, equals, hashCode`

    - ### Methods inherited from interface java.util.Collection

      `parallelStream, stream`

- - ### Constructor Detail

    - #### JsonArray

          public JsonArray()

      Instantiates an empty JsonArray.

    - #### JsonArray

          public JsonArray(Collection<?> collection)

      Instantiate a new JsonArray using ArrayList's constructor of the same type.
      Parameters:
        `collection` - represents the elements to produce the JsonArray with.

  - ### Method Detail

    - #### asCollection

          public <T> void asCollection(Collection<T> destination)

      A convenience method that assumes every element of the JsonArray is castable to T before adding it to a collection of Ts.
      Type Parameters:
        `T` - represents the type that all of the elements of the JsonArray should be cast to and the type the collection will contain.
      Parameters:
        `destination` - represents where all of the elements of the JsonArray are added to after being cast to the generic type provided.
      Throws:
        `ClassCastException` - if the unchecked cast of an element to T fails.

    - #### getBigDecimal

          public BigDecimal getBigDecimal(int index)

      A convenience method that assumes there is a BigDecimal, Number, or String at the given index. If a Number or String is there it is used to construct a new BigDecimal.
      Parameters:
        `index` - representing where the value is expected to be at.
      Returns:
        the value stored at the key or the default provided if the key doesn't exist.
      Throws:
        `ClassCastException` - if there was a value but didn't match the assumed return types.
        `IndexOutOfBoundsException` - if the index is outside of the range of element indexes in the JsonArray.
        `NumberFormatException` - if a String isn't a valid representation of a BigDecimal.
      See Also:
        `BigDecimal`, `Number.doubleValue()`

    - #### getBoolean

          public Boolean getBoolean(int index)

      A convenience method that assumes there is a Boolean or String value at the given index.
      Parameters:
        `index` - represents where the value is expected to be at.
      Returns:
        the value at the index provided cast to a boolean.
      Throws:
        `ClassCastException` - if there was a value but didn't match the assumed return type.
        `IndexOutOfBoundsException` - if the index is outside of the range of element indexes in the JsonArray.

    - #### getByte

          public Byte getByte(int index)

      A convenience method that assumes there is a Number or String value at the given index.
      Parameters:
        `index` - represents where the value is expected to be at.
      Returns:
        the value at the index provided cast to a byte.
      Throws:
        `ClassCastException` - if there was a value but didn't match the assumed return type.
        `NumberFormatException` - if a String isn't a valid representation of a BigDecimal or if the Number represents the double or float Infinity or NaN.
        `IndexOutOfBoundsException` - if the index is outside of the range of element indexes in the JsonArray.
      See Also:
        `Number`

    - #### getCollection

          public <T extends Collection<?>> T getCollection(int index)

      A convenience method that assumes there is a Collection value at the given index.
      Type Parameters:
        `T` - the kind of collection to expect at the index. Note unless manually added, collection values will be a JsonArray.
      Parameters:
        `index` - represents where the value is expected to be at.
      Returns:
        the value at the index provided cast to a Collection.
      Throws:
        `ClassCastException` - if there was a value but didn't match the assumed return type.
        `IndexOutOfBoundsException` - if the index is outside of the range of element indexes in the JsonArray.
      See Also:
        `Collection`

    - #### getDouble

          public Double getDouble(int index)

      A convenience method that assumes there is a Number or String value at the given index.
      Parameters:
        `index` - represents where the value is expected to be at.
      Returns:
        the value at the index provided cast to a double.
      Throws:
        `ClassCastException` - if there was a value but didn't match the assumed return type.
        `NumberFormatException` - if a String isn't a valid representation of a BigDecimal or if the Number represents the double or float Infinity or NaN.
        `IndexOutOfBoundsException` - if the index is outside of the range of element indexes in the JsonArray.
      See Also:
        `Number`

    - #### getFloat

          public Float getFloat(int index)

      A convenience method that assumes there is a Number or String value at the given index.
      Parameters:
        `index` - represents where the value is expected to be at.
      Returns:
        the value at the index provided cast to a float.
      Throws:
        `ClassCastException` - if there was a value but didn't match the assumed return type.
        `NumberFormatException` - if a String isn't a valid representation of a BigDecimal or if the Number represents the double or float Infinity or NaN.
        `IndexOutOfBoundsException` - if the index is outside of the range of element indexes in the JsonArray.
      See Also:
        `Number`

    - #### getInteger

          public Integer getInteger(int index)

      A convenience method that assumes there is a Number or String value at the given index.
      Parameters:
        `index` - represents where the value is expected to be at.
      Returns:
        the value at the index provided cast to a int.
      Throws:
        `ClassCastException` - if there was a value but didn't match the assumed return type.
        `NumberFormatException` - if a String isn't a valid representation of a BigDecimal or if the Number represents the double or float Infinity or NaN.
        `IndexOutOfBoundsException` - if the index is outside of the range of element indexes in the JsonArray.
      See Also:
        `Number`

    - #### getLong

          public Long getLong(int index)

      A convenience method that assumes there is a Number or String value at the given index.
      Parameters:
        `index` - represents where the value is expected to be at.
      Returns:
        the value at the index provided cast to a long.
      Throws:
        `ClassCastException` - if there was a value but didn't match the assumed return type.
        `NumberFormatException` - if a String isn't a valid representation of a BigDecimal or if the Number represents the double or float Infinity or NaN.
        `IndexOutOfBoundsException` - if the index is outside of the range of element indexes in the JsonArray.
      See Also:
        `Number`

    - #### getMap

          public <T extends Map<?,?>> T getMap(int index)

      A convenience method that assumes there is a Map value at the given index.
      Type Parameters:
        `T` - the kind of map to expect at the index. Note unless manually added, Map values will be a JsonObject.
      Parameters:
        `index` - represents where the value is expected to be at.
      Returns:
        the value at the index provided cast to a Map.
      Throws:
        `ClassCastException` - if there was a value but didn't match the assumed return type.
        `IndexOutOfBoundsException` - if the index is outside of the range of element indexes in the JsonArray.
      See Also:
        `Map`

    - #### getShort

          public Short getShort(int index)

      A convenience method that assumes there is a Number or String value at the given index.
      Parameters:
        `index` - represents where the value is expected to be at.
      Returns:
        the value at the index provided cast to a short.
      Throws:
        `ClassCastException` - if there was a value but didn't match the assumed return type.
        `NumberFormatException` - if a String isn't a valid representation of a BigDecimal or if the Number represents the double or float Infinity or NaN.
        `IndexOutOfBoundsException` - if the index is outside of the range of element indexes in the JsonArray.
      See Also:
        `Number`

    - #### getString

          public String getString(int index)

      A convenience method that assumes there is a Boolean, Number, or String value at the given index.
      Parameters:
        `index` - represents where the value is expected to be at.
      Returns:
        the value at the index provided cast to a String.
      Throws:
        `ClassCastException` - if there was a value but didn't match the assumed return type.
        `IndexOutOfBoundsException` - if the index is outside of the range of element indexes in the JsonArray.

    - #### toJson

          public String toJson()

      Description copied from interface: `Jsonable`
      Serialize to a JSON formatted string.
      Specified by:
        `toJson` in interface `Jsonable`
      Returns:
        a string, formatted in JSON, that represents the Jsonable.

    - #### toJson

          public void toJson(Writer writable)
                      throws IOException

      Description copied from interface: `Jsonable`
      Serialize to a JSON formatted stream.
      Specified by:
        `toJson` in interface `Jsonable`
      Parameters:
        `writable` - where the resulting JSON text should be sent.
      Throws:
        `IOException` - when the writable encounters an I/O error.