twitter4j

## Class JSONStringer

- java.lang.Object
- - twitter4j.JSONStringer

    public class JSONStringer
    extends Object

Implements `JSONObject.toString()` and `JSONArray.toString()`. Most application developers should use those methods directly and disregard this API. For example:

     JSONObject object = ...
     String json = object.toString();

Stringers only encode well-formed JSON strings. In particular:

- The stringer must have exactly one top-level array or object.
- Lexical scopes must be balanced: every call to `array()` must have a matching call to `endArray()` and every call to `object()` must have a matching call to `endObject()`.
- Arrays may not contain keys (property names).
- Objects must alternate keys (property names) and values.
- Values are inserted with either literal `value` calls, or by nesting arrays or objects.

Calls that would result in a malformed JSON string will fail with a `JSONException`.

This class provides no facility for pretty-printing (ie. indenting) output. To encode indented output, use `JSONObject.toString(int)` or `JSONArray.toString(int)`.

Some implementations of the API support at most 20 levels of nesting. Attempts to create more than 20 levels of nesting may fail with a `JSONException`.

Each stringer may be used to encode a single top level value. Instances of this class are not thread safe. Although this class is nonfinal, it was not designed for inheritance and should not be subclassed. In particular, self-use by overrideable methods is not specified. See Effective Java Item 17, "Design and Document or inheritance or else prohibit it" for further information.

### Constructor Summary

Constructors
Constructor and Description
`JSONStringer()`

### Method Summary

All Methods Instance Methods Concrete Methods
`JSONStringer` `array()` Begins encoding a new array.
`JSONStringer` `endArray()` Ends encoding the current array.
`JSONStringer` `endObject()` Ends encoding the current object.
`JSONStringer` `key(String name)` Encodes the key (property name) to this stringer.
`JSONStringer` `object()` Begins encoding a new object.
`String` `toString()` Returns the encoded JSON string.
`JSONStringer` `value(boolean value)` Encodes `value` to this stringer.
`JSONStringer` `value(double value)` Encodes `value` to this stringer.
`JSONStringer` `value(long value)` Encodes `value` to this stringer.
`JSONStringer` `value(Object value)` Encodes `value`.

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### JSONStringer

    public JSONStringer()

### Method Detail

#### array

    public JSONStringer array()
                       throws JSONException

Begins encoding a new array. Each call to this method must be paired with a call to `endArray()`.

Returns:
  this stringer.
Throws:
  `JSONException` - On internal errors. Shouldn't happen.

#### endArray

    public JSONStringer endArray()
                          throws JSONException

Ends encoding the current array.

Returns:
  this stringer.
Throws:
  `JSONException` - On internal errors. Shouldn't happen.

#### object

    public JSONStringer object()
                        throws JSONException

Begins encoding a new object. Each call to this method must be paired with a call to `endObject()`.

Returns:
  this stringer.
Throws:
  `JSONException` - On internal errors. Shouldn't happen.

#### endObject

    public JSONStringer endObject()
                           throws JSONException

Ends encoding the current object.

Returns:
  this stringer.
Throws:
  `JSONException` - On internal errors. Shouldn't happen.

#### value

    public JSONStringer value(Object value)
                       throws JSONException

Encodes `value`.

Parameters:
  `value` - a `JSONObject`, `JSONArray`, String, Boolean, Integer, Long, Double or null. May not be `NaNs` or `infinities`.
Returns:
  this stringer.
Throws:
  `JSONException` - On internal errors. Shouldn't happen.

#### value

    public JSONStringer value(boolean value)
                       throws JSONException

Encodes `value` to this stringer.

Parameters:
  `value` - The value to encode.
Returns:
  this stringer.
Throws:
  `JSONException` - On internal errors. Shouldn't happen.

#### value

    public JSONStringer value(double value)
                       throws JSONException

Encodes `value` to this stringer.

Parameters:
  `value` - a finite value. May not be `NaNs` or `infinities`.
Returns:
  this stringer.
Throws:
  `JSONException` - On internal errors. Shouldn't happen.

#### value

    public JSONStringer value(long value)
                       throws JSONException

Encodes `value` to this stringer.

Parameters:
  `value` - The value to encode.
Returns:
  this stringer.
Throws:
  `JSONException` - If we have an internal error. Shouldn't happen.

#### key

    public JSONStringer key(String name)
                     throws JSONException

Encodes the key (property name) to this stringer.

Parameters:
  `name` - the name of the forthcoming value. May not be null.
Returns:
  this stringer.
Throws:
  `JSONException` - on internal errors, shouldn't happen.

#### toString

    public String toString()

Returns the encoded JSON string.

If invoked with unterminated arrays or unclosed objects, this method's return value is undefined.

Warning: although it contradicts the general contract of `Object.toString()`, this method returns null if the stringer contains no data.

Overrides:
  `toString` in class `Object`