JSONObjects) and for serializing object graphs to JSON representations.See: Description
| Interface | Description |
|---|---|
| JSONArray |
An array of zero or more values
|
| JSONArray.Builder |
Build a
JSONArray instance |
| JSONNode |
Represents a
JSONObject or JSONArray in a JSON document. |
| JSONNode.Builder |
Abstract interface implemented by all builders that build
JSONNode instances |
| JSONObject |
Represents a JSON object
|
| JSONObject.Builder |
Build
JSONObject instances |
| JSONObjects |
API for creating in memory JSON Object representations, and for serializing in memory Object Graphs to JSON representations.
|
| Enum | Description |
|---|---|
| JSONNode.Type |
The type of node in the object hierarchy
|
JSONObjects) and for serializing object graphs to JSON representations. Developers may find this an easier to use API compared to the JSONStreams stream based API, however since JSONObjects requires storing a representation of an entire JSON document in memory it requires greater memory overhead and is not suitable for parsing or generating documents that may exceed available memory in size. In general, developers are encouraged to use the JSONStreams API in preference to this API. See below for instructions on how to:
@Provides
class SomeService {
@Inject SomeService(JSONObjects json) {
this.json = json;
}
void doSomething(InputStream content) throws IOException {
JSONObject object = (JSONObject)json.read(content); // assumes root is an object
... // process the JSONObject instance
}
}
JSONObjects in the usual mannerJSONObjects.read(java.io.InputStream) method to transform the byte stream into a JSONObject instance.
JSONObject object = (JSONObject)json.read(content); // assumes root is an object
for ( String propertyName: object.propertyNames() ) {
Object value = object.get(propertyName);
... // process the value
}
JSONObject.propertyNames() method returns an Iterable of all property names in the objectJSONObject.get(String) method returns the value of the named property.The value will be one of the following:
null if no such property exists or the property has a null value.String if the value is a JSON StringBigDecimal if the value is a JSON numeric.Boolean if the value is a JSON boolean.JSONArray if the value is a JSON array.JSONObject if the value is a JSON object.The instanceof operator can be used to determine which actual type a value is
JSONArray array = (JSONArray)json.read(content); // assumes root is an array
for ( Object value: array.values() ) {
... // process the value
}
JSONArray.values() method returns an Iterable of all values in the arrayJSONObjects are immutable objects, to create a modified JSONObject instance, the JSONObject.Builder type must be used.
JSONObject existing = ... // acquire a handle to existing JSONObject
JSONObject modified = existing.modify()
.add("someProperty","someValue")
.remove("someOtherProperty")
.build();
JSONObject.modify() method returns a JSONObject.Builder instance populated with the existing properties of the object.JSONObject.Builder type contains methods to add and remove properties, and a JSONObject.Builder.build() method to produce the modified instance.JSONArrays are immutable objects, to create a modified JSONArray instance, the JSONArray.Builder type must be used.
JSONArray existing = ... // acquire a handle to existing JSONArray
JSONArray modified = existing.modify()
.add("someValue")
.remove(0)
.build();
JSONArray.modify() method returns a JSONArray.Builder instance populated with the existing elements of the array.JSONArray.Builder type contains methods to add and remove elements, and a JSONArray.Builder.build() method to produce the modified instance.
JSONObjects json = ... // acquire handle to JSONObjects service
JSONArray array = json.array().add("something").add(2).addNull().build();
// array => ["something",2,null]
JSONObject object = json.object().add("foo","bar").add("nested",array).build();
// object => {"foo": "bar", "nested": ["something",2,null]}
JSONObjects.array() method returns a JSONArray.Builder instance, whose methods are then used to produce a new JSONArray instance.JSONObjects.object() method returns a JSONObject.Builder instance, whose methods are then used to produce a new JSONObject instance.JSONNode graphs can be written to streams using the JSONObjects.write(Appendable, JSONNode) and JSONObjects.write(java.io.OutputStream, JSONNode) methods.
java.io.Writer out = ... // acquire handler to Appendable instance
JSONObjects json = ... // acquire handle to JSONObjects service
// create a JSON graph
JSONArray array = json.array().add("something").add(2).addNull().build();
JSONObject object = json.object().add("foo","bar").add("nested",array).build();
// write the graph to the stream
json.write(out,object);
// out contents => {"foo": "bar", "nested": ["something",2,null]}
Any Java object graph conforming to the rules outlined below may be serialized to a JSON representation using the JSONObjects.write(java.io.OutputStream, Object) method:
The nodes in the object graph can be any of the following sub-types:
CharSequence and all sub-types, including String.char[] array, which is treated in the same manner as a CharSequence.Number and all sub-types (excluding the Character and Byte types), and their primitive type equivalents.Boolean type and it's primitive type equivalent.Date type and all sub-types.Readable type and all sub-types.null value.char[] and byte[] arrays.Iterables, whose elements are all one of the supported typesIterators, whose elements are all one of the supported typesMaps, whose keys can be converted to a String via the Object.toString() method and whose values are all one of the supported types.