Class JsonArray

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.lang.Iterable<java.lang.Object>, java.util.Collection<java.lang.Object>, java.util.List<java.lang.Object>, java.util.RandomAccess, Jsonable

    public class JsonArray
    extends java.util.ArrayList<java.lang.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.
    Since:
    2.0.0
    See Also:
    Jsoner, Serialized Form
    • Field Summary

      • Fields inherited from class java.util.AbstractList

        modCount
    • Constructor Summary

      Constructors 
      Constructor Description
      JsonArray()
      Instantiates an empty JsonArray.
      JsonArray​(java.util.Collection<?> collection)
      Instantiate a new JsonArray using ArrayList's constructor of the same type.
    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      <T> void asCollection​(java.util.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.
      java.math.BigDecimal getBigDecimal​(int index)
      A convenience method that assumes there is a BigDecimal, Number, or String at the given index.
      java.lang.Boolean getBoolean​(int index)
      A convenience method that assumes there is a Boolean or String value at the given index.
      java.lang.Byte getByte​(int index)
      A convenience method that assumes there is a Number or String value at the given index.
      <T extends java.util.Collection<?>>
      T
      getCollection​(int index)
      A convenience method that assumes there is a Collection value at the given index.
      java.lang.Double getDouble​(int index)
      A convenience method that assumes there is a Number or String value at the given index.
      <T extends java.lang.Enum<T>>
      T
      getEnum​(int index)
      Deprecated.
      2.3.0 Jsoner deprecated automatically serializing enums as Strings.
      java.lang.Float getFloat​(int index)
      A convenience method that assumes there is a Number or String value at the given index.
      java.lang.Integer getInteger​(int index)
      A convenience method that assumes there is a Number or String value at the given index.
      java.lang.Long getLong​(int index)
      A convenience method that assumes there is a Number or String value at the given index.
      <T extends java.util.Map<?,​?>>
      T
      getMap​(int index)
      A convenience method that assumes there is a Map value at the given index.
      java.lang.Short getShort​(int index)
      A convenience method that assumes there is a Number or String value at the given index.
      java.lang.String getString​(int index)
      A convenience method that assumes there is a Boolean, Number, or String value at the given index.
      java.lang.String toJson()
      Serialize to a JSON formatted string.
      void toJson​(java.io.Writer writable)
      Serialize to a JSON formatted stream.
      • Methods inherited from class java.util.ArrayList

        add, add, addAll, addAll, clear, clone, contains, ensureCapacity, equals, forEach, get, hashCode, 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.AbstractCollection

        containsAll, toString
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.util.Collection

        parallelStream, stream, toArray
      • Methods inherited from interface java.util.List

        containsAll
    • Constructor Detail

      • JsonArray

        public JsonArray()
        Instantiates an empty JsonArray.
      • JsonArray

        public JsonArray​(java.util.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​(java.util.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:
        java.lang.ClassCastException - if the unchecked cast of an element to T fails.
      • getBigDecimal

        public java.math.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:
        java.lang.ClassCastException - if there was a value but didn't match the assumed return types.
        java.lang.IndexOutOfBoundsException - if the index is outside of the range of element indexes in the JsonArray.
        java.lang.NumberFormatException - if a String isn't a valid representation of a BigDecimal.
        See Also:
        BigDecimal, Number.doubleValue()
      • getBoolean

        public java.lang.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:
        java.lang.ClassCastException - if there was a value but didn't match the assumed return type.
        java.lang.IndexOutOfBoundsException - if the index is outside of the range of element indexes in the JsonArray.
      • getByte

        public java.lang.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:
        java.lang.ClassCastException - if there was a value but didn't match the assumed return type.
        java.lang.NumberFormatException - if a String isn't a valid representation of a BigDecimal or if the Number represents the double or float Infinity or NaN.
        java.lang.IndexOutOfBoundsException - if the index is outside of the range of element indexes in the JsonArray.
        See Also:
        Number
      • getCollection

        public <T extends java.util.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:
        java.lang.ClassCastException - if there was a value but didn't match the assumed return type.
        java.lang.IndexOutOfBoundsException - if the index is outside of the range of element indexes in the JsonArray.
        See Also:
        Collection
      • getDouble

        public java.lang.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:
        java.lang.ClassCastException - if there was a value but didn't match the assumed return type.
        java.lang.NumberFormatException - if a String isn't a valid representation of a BigDecimal or if the Number represents the double or float Infinity or NaN.
        java.lang.IndexOutOfBoundsException - if the index is outside of the range of element indexes in the JsonArray.
        See Also:
        Number
      • getEnum

        @Deprecated
        public <T extends java.lang.Enum<T>> T getEnum​(int index)
                                                throws java.lang.ClassNotFoundException
        Deprecated.
        2.3.0 Jsoner deprecated automatically serializing enums as Strings.
        A convenience method that assumes there is a String value at the given index representing a fully qualified name in dot notation of an enum.
        Type Parameters:
        T - the Enum type the value at the index is expected to belong to.
        Parameters:
        index - representing where the value is expected to be at.
        Returns:
        the enum based on the string found at the index, or null if the value at the index was null.
        Throws:
        java.lang.ClassNotFoundException - if the element was a String but the declaring enum type couldn't be determined with it.
        java.lang.ClassCastException - if the element at the index was not a String or if the fully qualified enum name is of the wrong type.
        java.lang.IllegalArgumentException - if an enum type was dynamically determined but it doesn't define an enum with the dynamically determined name.
        java.lang.IndexOutOfBoundsException - if the index is outside of the range of element indexes in the JsonArray.
        See Also:
        Enum.valueOf(Class, String)
      • getFloat

        public java.lang.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:
        java.lang.ClassCastException - if there was a value but didn't match the assumed return type.
        java.lang.NumberFormatException - if a String isn't a valid representation of a BigDecimal or if the Number represents the double or float Infinity or NaN.
        java.lang.IndexOutOfBoundsException - if the index is outside of the range of element indexes in the JsonArray.
        See Also:
        Number
      • getInteger

        public java.lang.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:
        java.lang.ClassCastException - if there was a value but didn't match the assumed return type.
        java.lang.NumberFormatException - if a String isn't a valid representation of a BigDecimal or if the Number represents the double or float Infinity or NaN.
        java.lang.IndexOutOfBoundsException - if the index is outside of the range of element indexes in the JsonArray.
        See Also:
        Number
      • getLong

        public java.lang.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:
        java.lang.ClassCastException - if there was a value but didn't match the assumed return type.
        java.lang.NumberFormatException - if a String isn't a valid representation of a BigDecimal or if the Number represents the double or float Infinity or NaN.
        java.lang.IndexOutOfBoundsException - if the index is outside of the range of element indexes in the JsonArray.
        See Also:
        Number
      • getMap

        public <T extends java.util.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:
        java.lang.ClassCastException - if there was a value but didn't match the assumed return type.
        java.lang.IndexOutOfBoundsException - if the index is outside of the range of element indexes in the JsonArray.
        See Also:
        Map
      • getShort

        public java.lang.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:
        java.lang.ClassCastException - if there was a value but didn't match the assumed return type.
        java.lang.NumberFormatException - if a String isn't a valid representation of a BigDecimal or if the Number represents the double or float Infinity or NaN.
        java.lang.IndexOutOfBoundsException - if the index is outside of the range of element indexes in the JsonArray.
        See Also:
        Number
      • getString

        public java.lang.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:
        java.lang.ClassCastException - if there was a value but didn't match the assumed return type.
        java.lang.IndexOutOfBoundsException - if the index is outside of the range of element indexes in the JsonArray.
      • toJson

        public java.lang.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​(java.io.Writer writable)
                    throws java.io.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:
        java.io.IOException - when the writable encounters an I/O error.