org.apache.tomcat.util.json
public class: JSONWriter [javadoc |
source]
java.lang.Object
org.apache.tomcat.util.json.JSONWriter
Direct Known Subclasses:
JSONStringer
JSONWriter provides a quick and convenient way of producing JSON text.
The texts produced strictly conform to JSON syntax rules. No whitespace is
added, so the results are ready for transmission or storage. Each instance of
JSONWriter can produce one JSON text.
A JSONWriter instance provides a value
method for appending
values to the
text, and a key
method for adding keys before values in objects. There are array
and endArray
methods that make and bound array values, and
object
and endObject
methods which make and bound
object values. All of these methods return the JSONWriter instance,
permitting a cascade style. For example,
new JSONWriter(myWriter)
.object()
.key("JSON")
.value("Hello, World!")
.endObject();
which writes
{"JSON":"Hello, World!"}
The first method called must be array
or object
.
There are no methods for adding commas or colons. JSONWriter adds them for
you. Objects and arrays can be nested up to 20 levels deep.
This can sometimes be easier than using a JSONObject to build a string.
- author:
JSON.org
-
- version:
2008-09-18
-
Field Summary |
---|
protected char | mode | The current mode. Values:
'a' (array),
'd' (done),
'i' (initial),
'k' (key),
'o' (object). |
protected Writer | writer | The writer that will receive the output. |
Constructor: |
public JSONWriter(Writer w) {
this.comma = false;
this.mode = 'i';
this.stack = new JSONObject[maxdepth];
this.top = 0;
this.writer = w;
}
Make a fresh JSONWriter. It can be used to build one JSON text. |
Methods from java.lang.Object: |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method from org.apache.tomcat.util.json.JSONWriter Detail: |
public JSONWriter array() throws JSONException {
if (this.mode == 'i' || this.mode == 'o' || this.mode == 'a') {
this.push(null);
this.append("[");
this.comma = false;
return this;
}
throw new JSONException("Misplaced array.");
}
Begin appending a new array. All values until the balancing
endArray will be appended to this array. The
endArray method must be called to mark the array's end. |
public JSONWriter endArray() throws JSONException {
return this.end('a', ']');
}
End an array. This method most be called to balance calls to
array . |
public JSONWriter endObject() throws JSONException {
return this.end('k', '}');
}
End an object. This method most be called to balance calls to
object . |
public JSONWriter key(String s) throws JSONException {
if (s == null) {
throw new JSONException("Null key.");
}
if (this.mode == 'k') {
try {
if (this.comma) {
this.writer.write(',');
}
stack[top - 1].putOnce(s, Boolean.TRUE);
this.writer.write(JSONObject.quote(s));
this.writer.write(':');
this.comma = false;
this.mode = 'o';
return this;
} catch (IOException e) {
throw new JSONException(e);
}
}
throw new JSONException("Misplaced key.");
}
Append a key. The key will be associated with the next value. In an
object, every value must be preceded by a key. |
public JSONWriter object() throws JSONException {
if (this.mode == 'i') {
this.mode = 'o';
}
if (this.mode == 'o' || this.mode == 'a') {
this.append("{");
this.push(new JSONObject());
this.comma = false;
return this;
}
throw new JSONException("Misplaced object.");
}
Begin appending a new object. All keys and values until the balancing
endObject will be appended to this object. The
endObject method must be called to mark the object's end. |
public JSONWriter value(boolean b) throws JSONException {
return this.append(b ? "true" : "false");
}
Append either the value true or the value
false . |
public JSONWriter value(double d) throws JSONException {
return this.value(new Double(d));
}
|
public JSONWriter value(long l) throws JSONException {
return this.append(Long.toString(l));
}
|
public JSONWriter value(Object o) throws JSONException {
return this.append(JSONObject.valueToString(o));
}
|