Class JsonValue

java.lang.Object
arc.util.serialization.JsonValue
All Implemented Interfaces:
Iterable<JsonValue>

public class JsonValue extends Object implements Iterable<JsonValue>
Container for a JSON object, array, string, double, long, boolean, or null.

JsonValue children are a linked list. Iteration of arrays or objects is easily done using a for loop, either with the enhanced for loop syntactic sugar or like the example below. This is much more efficient than accessing children by index when there are many children.

 JsonValue map = ...;
 for (JsonValue entry = map.child; entry != null; entry = entry.next)
        System.out.println(entry.name + " = " + entry.asString());
 
  • Field Details

  • Constructor Details

    • JsonValue

      public JsonValue(JsonValue.ValueType type)
    • JsonValue

      public JsonValue(String value)
      Parameters:
      value - May be null.
    • JsonValue

      public JsonValue(double value)
    • JsonValue

      public JsonValue(long value)
    • JsonValue

      public JsonValue(double value, String stringValue)
    • JsonValue

      public JsonValue(long value, String stringValue)
    • JsonValue

      public JsonValue(boolean value)
  • Method Details

    • get

      public JsonValue get(int index)
      Returns the child at the specified index. This requires walking the linked list to the specified entry, see JsonValue for how to iterate efficiently.
      Returns:
      May be null.
    • get

      public JsonValue get(String name)
      Returns the child with the specified name.
      Returns:
      May be null.
    • has

      public boolean has(String name)
      Returns true if a child with the specified name exists.
    • require

      public JsonValue require(int index)
      Returns the child at the specified index. This requires walking the linked list to the specified entry, see JsonValue for how to iterate efficiently.
      Throws:
      IllegalArgumentException - if the child was not found.
    • require

      public JsonValue require(String name)
      Returns the child with the specified name.
      Throws:
      IllegalArgumentException - if the child was not found.
    • remove

      public JsonValue remove(int index)
      Removes the child with the specified index. This requires walking the linked list to the specified entry, see JsonValue for how to iterate efficiently.
      Returns:
      May be null.
    • remove

      public JsonValue remove(String name)
      Removes the child with the specified name.
      Returns:
      May be null.
    • asString

      public String asString()
      Returns this value as a string.
      Returns:
      May be null if this value is null.
      Throws:
      IllegalStateException - if this an array or object.
    • asFloat

      public float asFloat()
      Returns this value as a float.
      Throws:
      IllegalStateException - if this an array or object.
    • asDouble

      public double asDouble()
      Returns this value as a double.
      Throws:
      IllegalStateException - if this an array or object.
    • asLong

      public long asLong()
      Returns this value as a long.
      Throws:
      IllegalStateException - if this an array or object.
    • asInt

      public int asInt()
      Returns this value as an int.
      Throws:
      IllegalStateException - if this an array or object.
    • asBoolean

      public boolean asBoolean()
      Returns this value as a boolean.
      Throws:
      IllegalStateException - if this an array or object.
    • asByte

      public byte asByte()
      Returns this value as a byte.
      Throws:
      IllegalStateException - if this an array or object.
    • asShort

      public short asShort()
      Returns this value as a short.
      Throws:
      IllegalStateException - if this an array or object.
    • asChar

      public char asChar()
      Returns this value as a char.
      Throws:
      IllegalStateException - if this an array or object.
    • asStringArray

      public String[] asStringArray()
      Returns the children of this value as a newly allocated String array.
      Throws:
      IllegalStateException - if this is not an array.
    • asFloatArray

      public float[] asFloatArray()
      Returns the children of this value as a newly allocated float array.
      Throws:
      IllegalStateException - if this is not an array.
    • asDoubleArray

      public double[] asDoubleArray()
      Returns the children of this value as a newly allocated double array.
      Throws:
      IllegalStateException - if this is not an array.
    • asLongArray

      public long[] asLongArray()
      Returns the children of this value as a newly allocated long array.
      Throws:
      IllegalStateException - if this is not an array.
    • asIntArray

      public int[] asIntArray()
      Returns the children of this value as a newly allocated int array.
      Throws:
      IllegalStateException - if this is not an array.
    • asBooleanArray

      public boolean[] asBooleanArray()
      Returns the children of this value as a newly allocated boolean array.
      Throws:
      IllegalStateException - if this is not an array.
    • asByteArray

      public byte[] asByteArray()
      Returns the children of this value as a newly allocated byte array.
      Throws:
      IllegalStateException - if this is not an array.
    • asShortArray

      public short[] asShortArray()
      Returns the children of this value as a newly allocated short array.
      Throws:
      IllegalStateException - if this is not an array.
    • asCharArray

      public char[] asCharArray()
      Returns the children of this value as a newly allocated char array.
      Throws:
      IllegalStateException - if this is not an array.
    • hasChild

      public boolean hasChild(String name)
      Returns true if a child with the specified name exists and has a child.
    • getChild

      public JsonValue getChild(String name)
      Finds the child with the specified name and returns its first child.
      Returns:
      May be null.
    • getString

      public String getString(String name, String defaultValue)
      Finds the child with the specified name and returns it as a string. Returns defaultValue if not found.
      Parameters:
      defaultValue - May be null.
    • getFloat

      public float getFloat(String name, float defaultValue)
      Finds the child with the specified name and returns it as a float. Returns defaultValue if not found.
    • getDouble

      public double getDouble(String name, double defaultValue)
      Finds the child with the specified name and returns it as a double. Returns defaultValue if not found.
    • getLong

      public long getLong(String name, long defaultValue)
      Finds the child with the specified name and returns it as a long. Returns defaultValue if not found.
    • getInt

      public int getInt(String name, int defaultValue)
      Finds the child with the specified name and returns it as an int. Returns defaultValue if not found.
    • getBoolean

      public boolean getBoolean(String name, boolean defaultValue)
      Finds the child with the specified name and returns it as a boolean. Returns defaultValue if not found.
    • getByte

      public byte getByte(String name, byte defaultValue)
      Finds the child with the specified name and returns it as a byte. Returns defaultValue if not found.
    • getShort

      public short getShort(String name, short defaultValue)
      Finds the child with the specified name and returns it as a short. Returns defaultValue if not found.
    • getChar

      public char getChar(String name, char defaultValue)
      Finds the child with the specified name and returns it as a char. Returns defaultValue if not found.
    • getString

      public String getString(String name)
      Finds the child with the specified name and returns it as a string.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getFloat

      public float getFloat(String name)
      Finds the child with the specified name and returns it as a float.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getDouble

      public double getDouble(String name)
      Finds the child with the specified name and returns it as a double.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getLong

      public long getLong(String name)
      Finds the child with the specified name and returns it as a long.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getInt

      public int getInt(String name)
      Finds the child with the specified name and returns it as an int.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getBoolean

      public boolean getBoolean(String name)
      Finds the child with the specified name and returns it as a boolean.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getByte

      public byte getByte(String name)
      Finds the child with the specified name and returns it as a byte.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getShort

      public short getShort(String name)
      Finds the child with the specified name and returns it as a short.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getChar

      public char getChar(String name)
      Finds the child with the specified name and returns it as a char.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getString

      public String getString(int index)
      Finds the child with the specified index and returns it as a string.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getFloat

      public float getFloat(int index)
      Finds the child with the specified index and returns it as a float.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getDouble

      public double getDouble(int index)
      Finds the child with the specified index and returns it as a double.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getLong

      public long getLong(int index)
      Finds the child with the specified index and returns it as a long.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getInt

      public int getInt(int index)
      Finds the child with the specified index and returns it as an int.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getBoolean

      public boolean getBoolean(int index)
      Finds the child with the specified index and returns it as a boolean.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getByte

      public byte getByte(int index)
      Finds the child with the specified index and returns it as a byte.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getShort

      public short getShort(int index)
      Finds the child with the specified index and returns it as a short.
      Throws:
      IllegalArgumentException - if the child was not found.
    • getChar

      public char getChar(int index)
      Finds the child with the specified index and returns it as a char.
      Throws:
      IllegalArgumentException - if the child was not found.
    • type

      public JsonValue.ValueType type()
    • setType

      public void setType(JsonValue.ValueType type)
    • isArray

      public boolean isArray()
    • isObject

      public boolean isObject()
    • isString

      public boolean isString()
    • isNumber

      public boolean isNumber()
      Returns true if this is a double or long value.
    • isDouble

      public boolean isDouble()
    • isLong

      public boolean isLong()
    • isBoolean

      public boolean isBoolean()
    • isNull

      public boolean isNull()
    • isValue

      public boolean isValue()
      Returns true if this is not an array or object.
    • name

      public String name()
      Returns the name for this object value.
      Returns:
      May be null.
    • setName

      public void setName(String name)
    • parent

      public JsonValue parent()
      Returns the parent for this value.
      Returns:
      May be null.
    • child

      public JsonValue child()
      Returns the first child for this object or array.
      Returns:
      May be null.
    • addChild

      public void addChild(String name, JsonValue value)
      Sets the name of the specified value and adds it after the last child.
    • addChild

      public void addChild(JsonValue value)
      Adds the specified value after the last child.
    • next

      public JsonValue next()
      Returns the next sibling of this value.
      Returns:
      May be null.
    • setNext

      public void setNext(JsonValue next)
    • prev

      public JsonValue prev()
      Returns the previous sibling of this value.
      Returns:
      May be null.
    • setPrev

      public void setPrev(JsonValue prev)
    • set

      public void set(String value)
      Parameters:
      value - May be null.
    • set

      public void set(double value, String stringValue)
      Parameters:
      stringValue - May be null if the string representation is the string value of the double (eg, no leading zeros).
    • set

      public void set(long value, String stringValue)
      Parameters:
      stringValue - May be null if the string representation is the string value of the long (eg, no leading zeros).
    • set

      public void set(boolean value)
    • toJson

      public String toJson(JsonWriter.OutputType outputType)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • prettyPrint

      public String prettyPrint(JsonWriter.OutputType outputType, int singleLineColumns)
    • prettyPrint

      public String prettyPrint(JsonValue.PrettyPrintSettings settings)
    • prettyPrint

      public void prettyPrint(JsonWriter.OutputType outputType, Writer writer) throws IOException
      Throws:
      IOException
    • iterator

      public JsonValue.JsonIterator iterator()
      Specified by:
      iterator in interface Iterable<JsonValue>
    • trace

      public String trace()
      Returns a human readable string representing the path from the root of the JSON object graph to this value.