|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.google.gson.stream.JsonWriter
public final class JsonWriter
Writes a JSON (RFC 4627) encoded value to a stream, one token at a time. The stream includes both literal values (strings, numbers, booleans and nulls) as well as the begin and end delimiters of objects and arrays.
JsonWriter
. Each JSON
document must contain one top-level array or object. Call methods on the
writer as you walk the structure's contents, nesting arrays and objects as
necessary:
beginArray()
.
Write each of the array's elements with the appropriate value(java.lang.String)
methods or by nesting other arrays and objects. Finally close the array
using endArray()
.
beginObject()
.
Write each of the object's properties by alternating calls to
name(java.lang.String)
with the property's value. Write property values with the
appropriate value(java.lang.String)
method or by nesting other objects or arrays.
Finally close the object using endObject()
.
[
{
"id": 912345678901,
"text": "How do I stream JSON in Java?",
"geo": null,
"user": {
"name": "json_newb",
"followers_count": 41
}
},
{
"id": 912345678902,
"text": "@json_newb just use JsonWriter!",
"geo": [50.454722, -104.606667],
"user": {
"name": "jesse",
"followers_count": 2
}
}
]
This code encodes the above structure: public void writeJsonStream(OutputStream out, List<Message> messages) throws IOException {
JsonWriter writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8"));
writer.setIndentSpaces(4);
writeMessagesArray(writer, messages);
writer.close();
}
public void writeMessagesArray(JsonWriter writer, List<Message> messages) throws IOException {
writer.beginArray();
for (Message message : messages) {
writeMessage(writer, message);
}
writer.endArray();
}
public void writeMessage(JsonWriter writer, Message message) throws IOException {
writer.beginObject();
writer.name("id").value(message.getId());
writer.name("text").value(message.getText());
if (message.getGeo() != null) {
writer.name("geo");
writeDoublesArray(writer, message.getGeo());
} else {
writer.name("geo").nullValue();
}
writer.name("user");
writeUser(writer, message.getUser());
writer.endObject();
}
public void writeUser(JsonWriter writer, User user) throws IOException {
writer.beginObject();
writer.name("name").value(user.getName());
writer.name("followers_count").value(user.getFollowersCount());
writer.endObject();
}
public void writeDoublesArray(JsonWriter writer, List<Double> doubles) throws IOException {
writer.beginArray();
for (Double value : doubles) {
writer.value(value);
}
writer.endArray();
}
Each JsonWriter
may be used to write a single JSON stream.
Instances of this class are not thread safe. Calls that would result in a
malformed JSON string will fail with an IllegalStateException
.
Constructor Summary | |
---|---|
JsonWriter(Writer out)
Creates a new instance that writes a JSON-encoded stream to out . |
Method Summary | |
---|---|
JsonWriter |
beginArray()
Begins encoding a new array. |
JsonWriter |
beginObject()
Begins encoding a new object. |
void |
close()
Flushes and closes this writer and the underlying Writer . |
JsonWriter |
endArray()
Ends encoding the current array. |
JsonWriter |
endObject()
Ends encoding the current object. |
void |
flush()
Ensures all buffered data is written to the underlying Writer
and flushes that writer. |
boolean |
isHtmlSafe()
Returns true if this writer writes JSON that's safe for inclusion in HTML and XML documents. |
boolean |
isLenient()
Returns true if this writer has relaxed syntax rules. |
JsonWriter |
name(String name)
Encodes the property name. |
JsonWriter |
nullValue()
Encodes null . |
void |
setHtmlSafe(boolean htmlSafe)
Configure this writer to emit JSON that's safe for direct inclusion in HTML and XML documents. |
void |
setIndent(String indent)
Sets the indentation string to be repeated for each level of indentation in the encoded document. |
void |
setLenient(boolean lenient)
Configure this writer to relax its syntax rules. |
JsonWriter |
value(boolean value)
Encodes value . |
JsonWriter |
value(double value)
Encodes value . |
JsonWriter |
value(JsonLiteral value)
Writes value literally |
JsonWriter |
value(long value)
Encodes value . |
JsonWriter |
value(Number value)
Encodes value . |
JsonWriter |
value(String value)
Encodes value . |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public JsonWriter(Writer out)
out
.
For best performance, ensure Writer
is buffered; wrapping in
BufferedWriter
if necessary.
Method Detail |
---|
public void setIndent(String indent)
indent.isEmpty()
the encoded document
will be compact. Otherwise the encoded document will be more
human-readable.
indent
- a string containing only whitespace.public void setLenient(boolean lenient)
NaNs
or infinities
.
public boolean isLenient()
public void setHtmlSafe(boolean htmlSafe)
<
, >
,
&
and =
before writing them to the stream. Without this
setting, your XML/HTML encoder should replace these characters with the
corresponding escape sequences.
public boolean isHtmlSafe()
public JsonWriter beginArray() throws IOException
endArray()
.
IOException
public JsonWriter endArray() throws IOException
IOException
public JsonWriter beginObject() throws IOException
endObject()
.
IOException
public JsonWriter endObject() throws IOException
IOException
public JsonWriter name(String name) throws IOException
name
- the name of the forthcoming value. May not be null.
IOException
public JsonWriter value(String value) throws IOException
value
.
value
- the literal string value, or null to encode a null literal.
IOException
public JsonWriter nullValue() throws IOException
null
.
IOException
public JsonWriter value(JsonLiteral value) throws IOException
value
literally
IOException
public JsonWriter value(boolean value) throws IOException
value
.
IOException
public JsonWriter value(double value) throws IOException
value
.
value
- a finite value. May not be NaNs
or
infinities
.
IOException
public JsonWriter value(long value) throws IOException
value
.
IOException
public JsonWriter value(Number value) throws IOException
value
.
value
- a finite value. May not be NaNs
or
infinities
.
IOException
public void flush() throws IOException
Writer
and flushes that writer.
IOException
public void close() throws IOException
Writer
.
close
in interface Closeable
IOException
- if the JSON document is incomplete.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |