Class JsonValue

java.lang.Object
net.sourceforge.plantuml.json.JsonValue
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
JsonArray, JsonObject, JsonString

public abstract class JsonValue extends Object implements Serializable
Represents a JSON value. This can be a JSON object, an array, a number, a string, or one of the literals true, false, and null.

The literals true, false, and null are represented by the constants Json.TRUE, Json.FALSE, and Json.NULL.

JSON objects and arrays are represented by the subtypes JsonObject and JsonArray. Instances of these types can be created using the public constructors of these classes.

Instances that represent JSON numbers, strings and boolean values can be created using the static factory methods Json.value(String), Json.value(long), Json.value(double), etc.

In order to find out whether an instance of this class is of a certain type, the methods isObject(), isArray(), isString(), isNumber() etc. can be used.

If the type of a JSON value is known, the methods asObject(), asArray(), asString(), asInt(), etc. can be used to get this value directly in the appropriate target type.

This class is not supposed to be extended by clients.

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final JsonValue
    Deprecated.
    Use Json.FALSE instead
    static final JsonValue
    Deprecated.
    Use Json.NULL instead
    static final JsonValue
    Deprecated.
    Use Json.TRUE instead
  • Method Summary

    Modifier and Type
    Method
    Description
    Returns this JSON value as JsonArray, assuming that this value represents a JSON array.
    boolean
    Returns this JSON value as a boolean value, assuming that this value is either true or false.
    double
    Returns this JSON value as a double value, assuming that this value represents a JSON number.
    float
    Returns this JSON value as a float value, assuming that this value represents a JSON number.
    int
    Returns this JSON value as an int value, assuming that this value represents a JSON number that can be interpreted as Java int.
    long
    Returns this JSON value as a long value, assuming that this value represents a JSON number that can be interpreted as Java long.
    Returns this JSON value as JsonObject, assuming that this value represents a JSON object.
    Returns this JSON value as String, assuming that this value represents a JSON string.
    boolean
    equals(Object object)
    Indicates whether some other object is "equal to" this one according to the contract specified in Object.equals(Object).
    int
     
    boolean
    Detects whether this value represents a JSON array.
    boolean
    Detects whether this value represents a boolean value.
    boolean
    Detects whether this value represents the JSON literal false.
    boolean
    Detects whether this value represents the JSON literal null.
    boolean
    Detects whether this value represents a JSON number.
    boolean
    Detects whether this value represents a JSON object.
    boolean
    Detects whether this value represents a JSON string.
    boolean
    Detects whether this value represents the JSON literal true.
    static JsonValue
    readFrom(Reader reader)
    Deprecated.
    Use Json.parse(Reader) instead
    static JsonValue
    Deprecated.
    Use Json.parse(String) instead
    Returns the JSON string for this value in its minimal form, without any additional whitespace.
    Returns the JSON string for this value using the given formatting.
    static JsonValue
    valueOf(boolean value)
    Deprecated.
    Use Json.value() instead
    static JsonValue
    valueOf(double value)
    Deprecated.
    Use Json.value() instead
    static JsonValue
    valueOf(float value)
    Deprecated.
    Use Json.value() instead
    static JsonValue
    valueOf(int value)
    Deprecated.
    Use Json.value() instead
    static JsonValue
    valueOf(long value)
    Deprecated.
    Use Json.value() instead
    static JsonValue
    valueOf(String string)
    Deprecated.
    Use Json.value() instead
    void
    writeTo(Writer writer)
    Writes the JSON representation of this value to the given writer in its minimal form, without any additional whitespace.
    void
    writeTo(Writer writer, WriterConfig config)
    Writes the JSON representation of this value to the given writer using the given formatting.

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • TRUE

      @Deprecated public static final JsonValue TRUE
      Deprecated.
      Use Json.TRUE instead
      Represents the JSON literal true.
    • FALSE

      @Deprecated public static final JsonValue FALSE
      Deprecated.
      Use Json.FALSE instead
      Represents the JSON literal false.
    • NULL

      @Deprecated public static final JsonValue NULL
      Deprecated.
      Use Json.NULL instead
      Represents the JSON literal null.
  • Method Details

    • readFrom

      @Deprecated public static JsonValue readFrom(Reader reader) throws IOException
      Deprecated.
      Use Json.parse(Reader) instead
      Reads a JSON value from the given reader.

      Characters are read in chunks and buffered internally, therefore wrapping an existing reader in an additional BufferedReader does not improve reading performance.

      Parameters:
      reader - the reader to read the JSON value from
      Returns:
      the JSON value that has been read
      Throws:
      IOException - if an I/O error occurs in the reader
      ParseException - if the input is not valid JSON
    • readFrom

      @Deprecated public static JsonValue readFrom(String text)
      Deprecated.
      Use Json.parse(String) instead
      Reads a JSON value from the given string.
      Parameters:
      text - the string that contains the JSON value
      Returns:
      the JSON value that has been read
      Throws:
      ParseException - if the input is not valid JSON
    • valueOf

      @Deprecated public static JsonValue valueOf(int value)
      Deprecated.
      Use Json.value() instead
      Returns a JsonValue instance that represents the given int value.
      Parameters:
      value - the value to get a JSON representation for
      Returns:
      a JSON value that represents the given value
    • valueOf

      @Deprecated public static JsonValue valueOf(long value)
      Deprecated.
      Use Json.value() instead
      Returns a JsonValue instance that represents the given long value.
      Parameters:
      value - the value to get a JSON representation for
      Returns:
      a JSON value that represents the given value
    • valueOf

      @Deprecated public static JsonValue valueOf(float value)
      Deprecated.
      Use Json.value() instead
      Returns a JsonValue instance that represents the given float value.
      Parameters:
      value - the value to get a JSON representation for
      Returns:
      a JSON value that represents the given value
    • valueOf

      @Deprecated public static JsonValue valueOf(double value)
      Deprecated.
      Use Json.value() instead
      Returns a JsonValue instance that represents the given double value.
      Parameters:
      value - the value to get a JSON representation for
      Returns:
      a JSON value that represents the given value
    • valueOf

      @Deprecated public static JsonValue valueOf(String string)
      Deprecated.
      Use Json.value() instead
      Returns a JsonValue instance that represents the given string.
      Parameters:
      string - the string to get a JSON representation for
      Returns:
      a JSON value that represents the given string
    • valueOf

      @Deprecated public static JsonValue valueOf(boolean value)
      Deprecated.
      Use Json.value() instead
      Returns a JsonValue instance that represents the given boolean value.
      Parameters:
      value - the value to get a JSON representation for
      Returns:
      a JSON value that represents the given value
    • isObject

      public boolean isObject()
      Detects whether this value represents a JSON object. If this is the case, this value is an instance of JsonObject.
      Returns:
      true if this value is an instance of JsonObject
    • isArray

      public boolean isArray()
      Detects whether this value represents a JSON array. If this is the case, this value is an instance of JsonArray.
      Returns:
      true if this value is an instance of JsonArray
    • isNumber

      public boolean isNumber()
      Detects whether this value represents a JSON number.
      Returns:
      true if this value represents a JSON number
    • isString

      public boolean isString()
      Detects whether this value represents a JSON string.
      Returns:
      true if this value represents a JSON string
    • isBoolean

      public boolean isBoolean()
      Detects whether this value represents a boolean value.
      Returns:
      true if this value represents either the JSON literal true or false
    • isTrue

      public boolean isTrue()
      Detects whether this value represents the JSON literal true.
      Returns:
      true if this value represents the JSON literal true
    • isFalse

      public boolean isFalse()
      Detects whether this value represents the JSON literal false.
      Returns:
      true if this value represents the JSON literal false
    • isNull

      public boolean isNull()
      Detects whether this value represents the JSON literal null.
      Returns:
      true if this value represents the JSON literal null
    • asObject

      public JsonObject asObject()
      Returns this JSON value as JsonObject, assuming that this value represents a JSON object. If this is not the case, an exception is thrown.
      Returns:
      a JSONObject for this value
      Throws:
      UnsupportedOperationException - if this value is not a JSON object
    • asArray

      public JsonArray asArray()
      Returns this JSON value as JsonArray, assuming that this value represents a JSON array. If this is not the case, an exception is thrown.
      Returns:
      a JSONArray for this value
      Throws:
      UnsupportedOperationException - if this value is not a JSON array
    • asInt

      public int asInt()
      Returns this JSON value as an int value, assuming that this value represents a JSON number that can be interpreted as Java int. If this is not the case, an exception is thrown.

      To be interpreted as Java int, the JSON number must neither contain an exponent nor a fraction part. Moreover, the number must be in the Integer range.

      Returns:
      this value as int
      Throws:
      UnsupportedOperationException - if this value is not a JSON number
      NumberFormatException - if this JSON number can not be interpreted as int value
    • asLong

      public long asLong()
      Returns this JSON value as a long value, assuming that this value represents a JSON number that can be interpreted as Java long. If this is not the case, an exception is thrown.

      To be interpreted as Java long, the JSON number must neither contain an exponent nor a fraction part. Moreover, the number must be in the Long range.

      Returns:
      this value as long
      Throws:
      UnsupportedOperationException - if this value is not a JSON number
      NumberFormatException - if this JSON number can not be interpreted as long value
    • asFloat

      public float asFloat()
      Returns this JSON value as a float value, assuming that this value represents a JSON number. If this is not the case, an exception is thrown.

      If the JSON number is out of the Float range, Float.POSITIVE_INFINITY or Float.NEGATIVE_INFINITY is returned.

      Returns:
      this value as float
      Throws:
      UnsupportedOperationException - if this value is not a JSON number
    • asDouble

      public double asDouble()
      Returns this JSON value as a double value, assuming that this value represents a JSON number. If this is not the case, an exception is thrown.

      If the JSON number is out of the Double range, Double.POSITIVE_INFINITY or Double.NEGATIVE_INFINITY is returned.

      Returns:
      this value as double
      Throws:
      UnsupportedOperationException - if this value is not a JSON number
    • asString

      public String asString()
      Returns this JSON value as String, assuming that this value represents a JSON string. If this is not the case, an exception is thrown.
      Returns:
      the string represented by this value
      Throws:
      UnsupportedOperationException - if this value is not a JSON string
    • asBoolean

      public boolean asBoolean()
      Returns this JSON value as a boolean value, assuming that this value is either true or false. If this is not the case, an exception is thrown.
      Returns:
      this value as boolean
      Throws:
      UnsupportedOperationException - if this value is neither true or false
    • writeTo

      public void writeTo(Writer writer) throws IOException
      Writes the JSON representation of this value to the given writer in its minimal form, without any additional whitespace.

      Writing performance can be improved by using a BufferedWriter.

      Parameters:
      writer - the writer to write this value to
      Throws:
      IOException - if an I/O error occurs in the writer
    • writeTo

      public void writeTo(Writer writer, WriterConfig config) throws IOException
      Writes the JSON representation of this value to the given writer using the given formatting.

      Writing performance can be improved by using a BufferedWriter.

      Parameters:
      writer - the writer to write this value to
      config - a configuration that controls the formatting or null for the minimal form
      Throws:
      IOException - if an I/O error occurs in the writer
    • toString

      public String toString()
      Returns the JSON string for this value in its minimal form, without any additional whitespace. The result is guaranteed to be a valid input for the method Json.parse(String) and to create a value that is equal to this object.
      Overrides:
      toString in class Object
      Returns:
      a JSON string that represents this value
    • toString

      public String toString(WriterConfig config)
      Returns the JSON string for this value using the given formatting.
      Parameters:
      config - a configuration that controls the formatting or null for the minimal form
      Returns:
      a JSON string that represents this value
    • equals

      public boolean equals(Object object)
      Indicates whether some other object is "equal to" this one according to the contract specified in Object.equals(Object).

      Two JsonValues are considered equal if and only if they represent the same JSON text. As a consequence, two given JsonObjects may be different even though they contain the same set of names with the same values, but in a different order.

      Overrides:
      equals in class Object
      Parameters:
      object - the reference object with which to compare
      Returns:
      true if this object is the same as the object argument; false otherwise
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object