Class JsonValue

java.lang.Object
com.badlogic.gdx.utils.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 an iterator or the next() field, both shown below. This is much more efficient than accessing children by index when there are many children.

 JsonValue map = ...;
 // Allocates an iterator:
 for (JsonValue entry : map)
        System.out.println(entry.name + " = " + entry.asString());
 // No allocation:
 for (JsonValue entry = map.child; entry != null; entry = entry.next)
        System.out.println(entry.name + " = " + entry.asString());
 
  • Field Details

    • name

      public String name
    • child

      public JsonValue child
      May be null.
    • parent

      public JsonValue parent
      May be null.
    • next

      public JsonValue next
      May be null. When changing this field the parent size() may need to be changed.
    • prev

      public JsonValue prev
      May be null. When changing this field the parent size() may need to be changed.
    • size

      public int size
  • Constructor Details

    • JsonValue

      public JsonValue(JsonValue.ValueType type)
    • JsonValue

      public JsonValue(@Null 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)
    • JsonValue

      public JsonValue(JsonValue value)
      Creates a deep copy of the specific value, except parent(), next(), and prev() are not null.
  • Method Details

    • get

      @Null 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

      @Null 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.
    • iterator

      public JsonValue.JsonIterator iterator(String name)
      Returns an iterator for the child with the specified name, or an empty iterator if no child is found.
    • 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

      @Null 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

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

      public void remove()
      Removes this value from its parent.
    • notEmpty

      public boolean notEmpty()
      Returns true if there are one or more children in the array or object.
    • isEmpty

      public boolean isEmpty()
      Returns true if there are not children in the array or object.
    • size

      @Deprecated public int size()
      Deprecated.
      Use size instead. Returns this number of children in the array or object.
    • asString

      @Null 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

      @Null 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, @Null 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

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

      public void setName(@Null String name)
      Parameters:
      name - May be null.
    • parent

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

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

      public void setChild(String name, JsonValue value)
      Sets the name of the specified value and replaces an existing child with the same name, else adds it after the last child.
    • setChild

      public void setChild(JsonValue value)
      Replaces an existing child with the same name as the specified value, else adds it after the last child.
    • 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.
      Throws:
      IllegalStateException - if this is an object and the specified child's name is null.
    • next

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

      public void setNext(@Null JsonValue next)
      Sets the next sibling of this value. Does not change the parent size().
      Parameters:
      next - May be null.
    • prev

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

      public void setPrev(@Null JsonValue prev)
      Sets the next sibling of this value. Does not change the parent size().
      Parameters:
      prev - May be null.
    • set

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

      public void set(double value, @Null 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, @Null 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)
    • iterator

      public JsonValue.JsonIterator iterator()
      Iterates the children of this array or object.
      Specified by:
      iterator in interface Iterable<JsonValue>
    • toString

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

      public String trace()
      Returns a human readable string representing the path from the root of the JSON object graph to this value.
    • 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