Eclipse Remote Application Platform

org.eclipse.rap.json
Class JsonValue

java.lang.Object
  extended by org.eclipse.rap.json.JsonValue
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
JsonArray, JsonObject

public abstract class JsonValue
extends java.lang.Object
implements java.io.Serializable

Represents a JSON value. According to RFC 4627, a JSON value must be an object, an array, a number, a string, or one of the literal names true, false, and null.

The literal names true, false, and null are represented by the constants TRUE, FALSE, and NULL.

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

Instances for JSON numbers and strings can be created using the static factory methods valueOf(String), valueOf(long), valueOf(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 there is no doubt about the type of a JSON value, one of 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.

Since:
2.1
See Also:
Serialized Form

Field Summary
static JsonValue FALSE
          Represents the JSON literal false.
static JsonValue NULL
          The JSON literal null.
static JsonValue TRUE
          Represents the JSON literal true.
 
Method Summary
 JsonArray asArray()
          Returns this JSON value as JsonArray, assuming that this value represents a JSON array.
 boolean asBoolean()
          Returns this JSON value as a boolean value, assuming that this value is either true or false.
 double asDouble()
          Returns this JSON value as a double value, assuming that this value represents a JSON number.
 float asFloat()
          Returns this JSON value as a float value, assuming that this value represents a JSON number.
 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.
 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.
 JsonObject asObject()
          Returns this JSON value as JsonObject, assuming that this value represents a JSON object.
 java.lang.String asString()
          Returns this JSON value as String, assuming that this value represents a JSON string.
 boolean equals(java.lang.Object object)
          Indicates whether some other object is "equal to" this one according to the contract specified in Object.equals(Object).
 int hashCode()
           
 boolean isArray()
          Detects whether this value represents a JSON array.
 boolean isBoolean()
          Detects whether this value represents a boolean value.
 boolean isFalse()
          Detects whether this value represents the JSON literal false.
 boolean isNull()
          Detects whether this value represents the JSON literal null.
 boolean isNumber()
          Detects whether this value represents a JSON number.
 boolean isObject()
          Detects whether this value represents a JSON object.
 boolean isString()
          Detects whether this value represents a JSON string.
 boolean isTrue()
          Detects whether this value represents the JSON literal true.
static JsonValue readFrom(java.io.Reader reader)
          Reads a JSON value from the given reader.
static JsonValue readFrom(java.lang.String text)
          Reads a JSON value from the given string.
 java.lang.String toString()
          Returns the JSON string for this value in its minimal form, without any additional whitespace.
static JsonValue valueOf(boolean value)
          Returns a JsonValue instance that represents the given boolean value.
static JsonValue valueOf(double value)
          Returns a JsonValue instance that represents the given double value.
static JsonValue valueOf(float value)
          Returns a JsonValue instance that represents the given float value.
static JsonValue valueOf(int value)
          Returns a JsonValue instance that represents the given int value.
static JsonValue valueOf(long value)
          Returns a JsonValue instance that represents the given long value.
static JsonValue valueOf(java.lang.String string)
          Returns a JsonValue instance that represents the given string.
protected abstract  void write(org.eclipse.rap.json.JsonWriter writer)
           
 void writeTo(java.io.Writer writer)
          Writes the JSON representation for this object to the given writer.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

TRUE

public static final JsonValue TRUE
Represents the JSON literal true.


FALSE

public static final JsonValue FALSE
Represents the JSON literal false.


NULL

public static final JsonValue NULL
The JSON literal null.

Method Detail

readFrom

public static JsonValue readFrom(java.io.Reader reader)
                          throws java.io.IOException
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:
java.io.IOException - if an I/O error occurs in the reader
ParseException - if the input is not valid JSON

readFrom

public static JsonValue readFrom(java.lang.String text)
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

public static JsonValue valueOf(int value)
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
Since:
2.2

valueOf

public static JsonValue valueOf(long value)
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

public static JsonValue valueOf(float value)
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

public static JsonValue valueOf(double value)
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

public static JsonValue valueOf(java.lang.String string)
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

public static JsonValue valueOf(boolean value)
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:
java.lang.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:
java.lang.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:
java.lang.UnsupportedOperationException - if this value is not a JSON number
java.lang.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:
java.lang.UnsupportedOperationException - if this value is not a JSON number
java.lang.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:
java.lang.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:
java.lang.UnsupportedOperationException - if this value is not a JSON number

asString

public java.lang.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:
java.lang.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:
java.lang.UnsupportedOperationException - if this value is neither true or false

writeTo

public void writeTo(java.io.Writer writer)
             throws java.io.IOException
Writes the JSON representation for this object to the given writer.

Single elements are passed directly to the given writer. Therefore, if the writer is not buffered, wrapping it in a BufferedWriter can drastically improve writing performance.

Parameters:
writer - the writer to write this value to
Throws:
java.io.IOException - if an I/O error occurs in the writer

toString

public java.lang.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 readFrom(String) and to create a value that is equal to this object.

Overrides:
toString in class java.lang.Object
Returns:
a JSON string that represents this value

equals

public boolean equals(java.lang.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 java.lang.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 java.lang.Object

write

protected abstract void write(org.eclipse.rap.json.JsonWriter writer)
                       throws java.io.IOException
Throws:
java.io.IOException

Eclipse Remote Application Platform

Copyright (c) EclipseSource and others 2002, 2013. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0