public class JsonObject extends JsonValue implements java.lang.Iterable<JsonObject.Member>
Members can be added using the add(String, ...)
methods which
accept instances of JsonValue
, strings, primitive numbers, and
boolean values. To modify certain values of an object, use the
set(String, ...)
methods. Please note that the add
methods are faster than set
as they do not search for existing
members. On the other hand, the add
methods do not prevent
adding multiple members with the same name. Duplicate names are discouraged
but not prohibited by JSON.
Members can be accessed by their name using get(String)
. A list of
all names can be obtained from the method names()
. This class also
supports iterating over the members in document order using an
iterator()
or an enhanced for loop:
for (Member member : jsonObject) { String name = member.getName(); JsonValue value = member.getValue(); ... }
Even though JSON objects are unordered by definition, instances of this class preserve the order of members to allow processing in document order and to guarantee a predictable output.
Note that this class is not thread-safe. If multiple threads
access a JsonObject
instance concurrently, while at least one of
these threads modifies the contents of this object, access to the instance
must be synchronized externally. Failure to do so may lead to an inconsistent
state.
This class is not supposed to be extended by clients.
Modifier and Type | Class and Description |
---|---|
static class |
JsonObject.Member
Represents a member of a JSON object, a pair of a name and a value.
|
Constructor and Description |
---|
JsonObject()
Creates a new empty JsonObject.
|
JsonObject(JsonObject object)
Creates a new JsonObject, initialized with the contents of the specified JSON
object.
|
Modifier and Type | Method and Description |
---|---|
JsonObject |
add(java.lang.String name,
boolean value)
Appends a new member to the end of this object, with the specified name and
the JSON representation of the specified
boolean value. |
JsonObject |
add(java.lang.String name,
double value)
Appends a new member to the end of this object, with the specified name and
the JSON representation of the specified
double value. |
JsonObject |
add(java.lang.String name,
float value)
Appends a new member to the end of this object, with the specified name and
the JSON representation of the specified
float value. |
JsonObject |
add(java.lang.String name,
int value)
Appends a new member to the end of this object, with the specified name and
the JSON representation of the specified
int value. |
JsonObject |
add(java.lang.String name,
JsonValue value)
Appends a new member to the end of this object, with the specified name and
the specified JSON value.
|
JsonObject |
add(java.lang.String name,
long value)
Appends a new member to the end of this object, with the specified name and
the JSON representation of the specified
long value. |
JsonObject |
add(java.lang.String name,
java.lang.String value)
Appends a new member to the end of this object, with the specified name and
the JSON representation of the specified string.
|
JsonObject |
asObject()
Returns this JSON value as
JsonObject , assuming that this value
represents a JSON object. |
boolean |
contains(java.lang.String name)
Checks if a specified member is present as a child of this object.
|
boolean |
equals(java.lang.Object obj)
Indicates whether some other object is "equal to" this one according to the
contract specified in
Object.equals(Object) . |
JsonValue |
get(java.lang.String name)
Returns the value of the member with the specified name in this object.
|
boolean |
getBoolean(java.lang.String name,
boolean defaultValue)
Returns the
boolean value of the member with the specified name
in this object. |
double |
getDouble(java.lang.String name,
double defaultValue)
Returns the
double value of the member with the specified name
in this object. |
float |
getFloat(java.lang.String name,
float defaultValue)
Returns the
float value of the member with the specified name in
this object. |
int |
getInt(java.lang.String name,
int defaultValue)
Returns the
int value of the member with the specified name in
this object. |
long |
getLong(java.lang.String name,
long defaultValue)
Returns the
long value of the member with the specified name in
this object. |
java.lang.String |
getString(java.lang.String name,
java.lang.String defaultValue)
Returns the
String value of the member with the specified name
in this object. |
int |
hashCode() |
boolean |
isEmpty()
Returns
true if this object contains no members. |
boolean |
isObject()
Detects whether this value represents a JSON object.
|
java.util.Iterator<JsonObject.Member> |
iterator()
Returns an iterator over the members of this object in document order.
|
JsonObject |
merge(JsonObject object)
Copies all members of the specified object into this object.
|
java.util.List<java.lang.String> |
names()
Returns a list of the names in this object in document order.
|
static JsonObject |
readFrom(java.io.Reader reader)
Deprecated.
Use
Json.parse(Reader) .asObject() instead |
static JsonObject |
readFrom(java.lang.String string)
Deprecated.
Use
Json.parse(String) .asObject() instead |
JsonObject |
remove(java.lang.String name)
Removes a member with the specified name from this object.
|
JsonObject |
set(java.lang.String name,
boolean value)
Sets the value of the member with the specified name to the JSON
representation of the specified
boolean value. |
JsonObject |
set(java.lang.String name,
double value)
Sets the value of the member with the specified name to the JSON
representation of the specified
double value. |
JsonObject |
set(java.lang.String name,
float value)
Sets the value of the member with the specified name to the JSON
representation of the specified
float value. |
JsonObject |
set(java.lang.String name,
int value)
Sets the value of the member with the specified name to the JSON
representation of the specified
int value. |
JsonObject |
set(java.lang.String name,
JsonValue value)
Sets the value of the member with the specified name to the specified JSON
value.
|
JsonObject |
set(java.lang.String name,
long value)
Sets the value of the member with the specified name to the JSON
representation of the specified
long value. |
JsonObject |
set(java.lang.String name,
java.lang.String value)
Sets the value of the member with the specified name to the JSON
representation of the specified string.
|
int |
size()
Returns the number of members (name/value pairs) in this object.
|
static JsonObject |
unmodifiableObject(JsonObject object)
Returns an unmodifiable JsonObject for the specified one.
|
asArray, asBoolean, asDouble, asFloat, asInt, asLong, asString, isArray, isBoolean, isFalse, isNull, isNumber, isString, isTrue, toString, toString, valueOf, valueOf, valueOf, valueOf, valueOf, valueOf, writeTo, writeTo
public JsonObject()
public JsonObject(JsonObject object)
object
- the JSON object to get the initial contents from, must not be
null
@Deprecated public static JsonObject readFrom(java.io.Reader reader) throws java.io.IOException
Json.parse(Reader)
.asObject()
instead
Characters are read in chunks and buffered internally, therefore wrapping an
existing reader in an additional BufferedReader
does
not improve reading performance.
reader
- the reader to read the JSON object fromjava.io.IOException
- if an I/O error occurs in the readerParseException
- if the input is not valid JSONjava.lang.UnsupportedOperationException
- if the input does not contain a JSON
object@Deprecated public static JsonObject readFrom(java.lang.String string)
Json.parse(String)
.asObject()
insteadstring
- the string that contains the JSON objectParseException
- if the input is not valid JSONjava.lang.UnsupportedOperationException
- if the input does not contain a JSON
objectpublic static JsonObject unmodifiableObject(JsonObject object)
The returned JsonObject is backed by the given object and reflect changes
that happen to it. Attempts to modify the returned JsonObject result in an
UnsupportedOperationException
.
object
- the JsonObject for which an unmodifiable JsonObject is to be
returnedpublic JsonObject add(java.lang.String name, int value)
int
value.
This method does not prevent duplicate names. Calling this
method with a name that already exists in the object will append another
member with the same name. In order to replace existing members, use the
method set(name, value)
instead. However, add
is much faster than set (because it does not need to search
for existing members). Therefore add should be preferred when
constructing new objects.
name
- the name of the member to addvalue
- the value of the member to addpublic JsonObject add(java.lang.String name, long value)
long
value.
This method does not prevent duplicate names. Calling this
method with a name that already exists in the object will append another
member with the same name. In order to replace existing members, use the
method set(name, value)
instead. However, add
is much faster than set (because it does not need to search
for existing members). Therefore add should be preferred when
constructing new objects.
name
- the name of the member to addvalue
- the value of the member to addpublic JsonObject add(java.lang.String name, float value)
float
value.
This method does not prevent duplicate names. Calling this
method with a name that already exists in the object will append another
member with the same name. In order to replace existing members, use the
method set(name, value)
instead. However, add
is much faster than set (because it does not need to search
for existing members). Therefore add should be preferred when
constructing new objects.
name
- the name of the member to addvalue
- the value of the member to addpublic JsonObject add(java.lang.String name, double value)
double
value.
This method does not prevent duplicate names. Calling this
method with a name that already exists in the object will append another
member with the same name. In order to replace existing members, use the
method set(name, value)
instead. However, add
is much faster than set (because it does not need to search
for existing members). Therefore add should be preferred when
constructing new objects.
name
- the name of the member to addvalue
- the value of the member to addpublic JsonObject add(java.lang.String name, boolean value)
boolean
value.
This method does not prevent duplicate names. Calling this
method with a name that already exists in the object will append another
member with the same name. In order to replace existing members, use the
method set(name, value)
instead. However, add
is much faster than set (because it does not need to search
for existing members). Therefore add should be preferred when
constructing new objects.
name
- the name of the member to addvalue
- the value of the member to addpublic JsonObject add(java.lang.String name, java.lang.String value)
This method does not prevent duplicate names. Calling this
method with a name that already exists in the object will append another
member with the same name. In order to replace existing members, use the
method set(name, value)
instead. However, add
is much faster than set (because it does not need to search
for existing members). Therefore add should be preferred when
constructing new objects.
name
- the name of the member to addvalue
- the value of the member to addpublic JsonObject add(java.lang.String name, JsonValue value)
This method does not prevent duplicate names. Calling this
method with a name that already exists in the object will append another
member with the same name. In order to replace existing members, use the
method set(name, value)
instead. However, add
is much faster than set (because it does not need to search
for existing members). Therefore add should be preferred when
constructing new objects.
name
- the name of the member to addvalue
- the value of the member to add, must not be null
public JsonObject set(java.lang.String name, int value)
int
value. If this object does
not contain a member with this name, a new member is added at the end of the
object. If this object contains multiple members with this name, only the
last one is changed.
This method should only be used to modify existing objects.
To fill a new object with members, the method add(name, value)
should be preferred which is much faster (as it does not need to search for
existing members).
name
- the name of the member to replacevalue
- the value to set to the memberpublic JsonObject set(java.lang.String name, long value)
long
value. If this object does
not contain a member with this name, a new member is added at the end of the
object. If this object contains multiple members with this name, only the
last one is changed.
This method should only be used to modify existing objects.
To fill a new object with members, the method add(name, value)
should be preferred which is much faster (as it does not need to search for
existing members).
name
- the name of the member to replacevalue
- the value to set to the memberpublic JsonObject set(java.lang.String name, float value)
float
value. If this object does
not contain a member with this name, a new member is added at the end of the
object. If this object contains multiple members with this name, only the
last one is changed.
This method should only be used to modify existing objects.
To fill a new object with members, the method add(name, value)
should be preferred which is much faster (as it does not need to search for
existing members).
name
- the name of the member to addvalue
- the value of the member to addpublic JsonObject set(java.lang.String name, double value)
double
value. If this object
does not contain a member with this name, a new member is added at the end of
the object. If this object contains multiple members with this name, only the
last one is changed.
This method should only be used to modify existing objects.
To fill a new object with members, the method add(name, value)
should be preferred which is much faster (as it does not need to search for
existing members).
name
- the name of the member to addvalue
- the value of the member to addpublic JsonObject set(java.lang.String name, boolean value)
boolean
value. If this object
does not contain a member with this name, a new member is added at the end of
the object. If this object contains multiple members with this name, only the
last one is changed.
This method should only be used to modify existing objects.
To fill a new object with members, the method add(name, value)
should be preferred which is much faster (as it does not need to search for
existing members).
name
- the name of the member to addvalue
- the value of the member to addpublic JsonObject set(java.lang.String name, java.lang.String value)
This method should only be used to modify existing objects.
To fill a new object with members, the method add(name, value)
should be preferred which is much faster (as it does not need to search for
existing members).
name
- the name of the member to addvalue
- the value of the member to addpublic JsonObject set(java.lang.String name, JsonValue value)
This method should only be used to modify existing objects.
To fill a new object with members, the method add(name, value)
should be preferred which is much faster (as it does not need to search for
existing members).
name
- the name of the member to addvalue
- the value of the member to add, must not be null
public JsonObject remove(java.lang.String name)
name
- the name of the member to removepublic boolean contains(java.lang.String name)
null
,
JsonValue.isNull()
should be used for this purpose.name
- the name of the member to check forpublic JsonObject merge(JsonObject object)
object
- the object to mergepublic JsonValue get(java.lang.String name)
name
- the name of the member whose value is to be returnednull
if this object does not contain a member with that
namepublic int getInt(java.lang.String name, int defaultValue)
int
value of the member with the specified name in
this object. If this object does not contain a member with this name, the
given default value is returned. If this object contains multiple members
with the given name, the last one will be picked. If this member's value does
not represent a JSON number or if it cannot be interpreted as Java
int
, an exception is thrown.name
- the name of the member whose value is to be returneddefaultValue
- the value to be returned if the requested member is
missingpublic long getLong(java.lang.String name, long defaultValue)
long
value of the member with the specified name in
this object. If this object does not contain a member with this name, the
given default value is returned. If this object contains multiple members
with the given name, the last one will be picked. If this member's value does
not represent a JSON number or if it cannot be interpreted as Java
long
, an exception is thrown.name
- the name of the member whose value is to be returneddefaultValue
- the value to be returned if the requested member is
missingpublic float getFloat(java.lang.String name, float defaultValue)
float
value of the member with the specified name in
this object. If this object does not contain a member with this name, the
given default value is returned. If this object contains multiple members
with the given name, the last one will be picked. If this member's value does
not represent a JSON number or if it cannot be interpreted as Java
float
, an exception is thrown.name
- the name of the member whose value is to be returneddefaultValue
- the value to be returned if the requested member is
missingpublic double getDouble(java.lang.String name, double defaultValue)
double
value of the member with the specified name
in this object. If this object does not contain a member with this name, the
given default value is returned. If this object contains multiple members
with the given name, the last one will be picked. If this member's value does
not represent a JSON number or if it cannot be interpreted as Java
double
, an exception is thrown.name
- the name of the member whose value is to be returneddefaultValue
- the value to be returned if the requested member is
missingpublic boolean getBoolean(java.lang.String name, boolean defaultValue)
boolean
value of the member with the specified name
in this object. If this object does not contain a member with this name, the
given default value is returned. If this object contains multiple members
with the given name, the last one will be picked. If this member's value does
not represent a JSON true
or false
value, an
exception is thrown.name
- the name of the member whose value is to be returneddefaultValue
- the value to be returned if the requested member is
missingpublic java.lang.String getString(java.lang.String name, java.lang.String defaultValue)
String
value of the member with the specified name
in this object. If this object does not contain a member with this name, the
given default value is returned. If this object contains multiple members
with the given name, the last one is picked. If this member's value does not
represent a JSON string, an exception is thrown.name
- the name of the member whose value is to be returneddefaultValue
- the value to be returned if the requested member is
missingpublic int size()
public boolean isEmpty()
true
if this object contains no members.true
if this object contains no memberspublic java.util.List<java.lang.String> names()
public java.util.Iterator<JsonObject.Member> iterator()
iterator
in interface java.lang.Iterable<JsonObject.Member>
public boolean isObject()
JsonValue
JsonObject
.public JsonObject asObject()
JsonValue
JsonObject
, assuming that this value
represents a JSON object. If this is not the case, an exception is thrown.public boolean equals(java.lang.Object obj)
JsonValue
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.