JsonWriter
  public
  
  final
  
  class
  JsonWriter
  
    extends Object
  
  
  
  
  
      implements
      
        Closeable
      
  
  
  
    
  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.
 
Encoding JSON
 To encode your data as JSON, create a new 
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:
 
   - To write arrays, first call beginArray().
       Write each of the array's elements with the appropriatevalue(boolean)methods or by nesting other arrays and objects. Finally close the array
       usingendArray().
- To write objects, first call beginObject().
       Write each of the object's properties by alternating calls toname(String)with the property's value. Write property values with the
       appropriatevalue(boolean)method or by nesting other objects or arrays.
       Finally close the object usingendObject().
Example
 Suppose we'd like to encode a stream of messages such as the following: 
 [
   {
     "id": 912345678901,
     "text": "How do I write JSON on Android?",
     "geo": null,
     "user": {
       "name": "android_newb",
       "followers_count": 41
      }
   },
   {
     "id": 912345678902,
     "text": "@android_newb just use android.util.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.setIndent("  ");
     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.
Summary
| Public constructors | 
|---|
  
  
  
    | 
      JsonWriter(Writer out)
      Creates a new instance that writes a JSON-encoded stream to out. | 
  
| Inherited methods | 
|---|
| 
    From class
      
        
          java.lang.Object
        
      
      
  
  
  
    | 
        
        
        
        
        
        Object | 
      clone()
      Creates and returns a copy of this object.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      equals(Object obj)
      Indicates whether some other object is "equal to" this one.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      finalize()
      Called by the garbage collector on an object when garbage collection
 determines that there are no more references to the object.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        Class<?> | 
      getClass()
      Returns the runtime class of this Object. |  
  
  
    | 
        
        
        
        
        
        int | 
      hashCode()
      Returns a hash code value for the object.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      notify()
      Wakes up a single thread that is waiting on this object's
 monitor.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      notifyAll()
      Wakes up all threads that are waiting on this object's monitor.
        
    
 |  
  
  
    | 
        
        
        
        
        
        String | 
      toString()
      Returns a string representation of the object.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      wait(long timeoutMillis, int nanos)
      Causes the current thread to wait until it is awakened, typically
 by being notified or interrupted, or until a
 certain amount of real time has elapsed.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      wait(long timeoutMillis)
      Causes the current thread to wait until it is awakened, typically
 by being notified or interrupted, or until a
 certain amount of real time has elapsed.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      wait()
      Causes the current thread to wait until it is awakened, typically
 by being notified or interrupted.
        
    
 |  | 
| 
    From interface
      
        
          java.io.Closeable
        
      
      
  
  
  
    | 
        abstract
        
        
        
        
        void | 
      close()
      Closes this stream and releases any system resources associated
 with it.
        
    
 |  | 
|  | 
Public constructors
    JsonWriter
    
public JsonWriter (Writer out)
    
    
    
  Creates a new instance that writes a JSON-encoded stream to out.
 For best performance, ensure Writer is buffered; wrapping in
 BufferedWriter if necessary.
    
 
Public methods
    beginArray
    
public JsonWriter beginArray ()
    
    
    
  Begins encoding a new array. Each call to this method must be paired with
 a call to endArray().
    
      
  
 
    beginObject
    
public JsonWriter beginObject ()
    
    
    
  Begins encoding a new object. Each call to this method must be paired
 with a call to endObject().
    
      
  
 
    close
    
public void close ()
    
    
    
  Flushes and closes this writer and the underlying Writer.
      
  
 
    endArray
    
public JsonWriter endArray ()
    
    
    
  Ends encoding the current array.
    
      
  
 
    endObject
    
public JsonWriter endObject ()
    
    
    
  Ends encoding the current object.
    
      
  
 
    flush
    
public void flush ()
    
    
    
  Ensures all buffered data is written to the underlying Writer
 and flushes that writer.
      
  
 
    isLenient
    
public boolean isLenient ()
    
    
    
  Returns true if this writer has relaxed syntax rules.
    
 
    name
    
public JsonWriter name (String name)
    
    
    
  Encodes the property name.
    
    | Parameters | 
|---|
      
        | name | String: the name of the forthcoming value. May not be null. | 
    
    
      
  
 
    nullValue
    
public JsonWriter nullValue ()
    
    
    
  Encodes null.
    
      
  
 
    setIndent
    
public void setIndent (String indent)
    
    
    
  Sets the indentation string to be repeated for each level of indentation
 in the encoded document. If indent.isEmpty() the encoded document
 will be compact. Otherwise the encoded document will be more
 human-readable.
    
    | Parameters | 
|---|
      
        | indent | String: a string containing only whitespace. | 
    
 
    setLenient
    
public void setLenient (boolean lenient)
    
    
    
  Configure this writer to relax its syntax rules. By default, this writer
 only emits well-formed JSON as specified by RFC 4627. Setting the writer
 to lenient permits the following:
 
   - Top-level values of any type. With strict writing, the top-level
       value must be an object or an array.
   
- Numbers may be NaNsorinfinities.
    | Parameters | 
|---|
      
        | lenient | boolean | 
    
 
    value
    
public JsonWriter value (double value)
    
    
    
  Encodes value.
    
    | Parameters | 
|---|
      
        | value | double: a finite value. May not beNaNsorinfinitiesunless this writer is lenient. | 
    
    
      
  
 
    value
    
public JsonWriter value (Number value)
    
    
    
  Encodes value.
    
    | Parameters | 
|---|
      
        | value | Number: a finite value. May not beNaNsorinfinitiesunless this writer is lenient. | 
    
    
      
  
 
    value
    
public JsonWriter value (boolean value)
    
    
    
  Encodes value.
    
    
      
  
 
    value
    
public JsonWriter value (long value)
    
    
    
  Encodes value.
    
    
      
  
 
    value
    
public JsonWriter value (String value)
    
    
    
  Encodes value.
    
    | Parameters | 
|---|
      
        | value | String: the literal string value, or null to encode a null literal. |