Class JSONStringer

java.lang.Object
org.springframework.boot.cli.json.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 Details

    • JSONStringer

      public JSONStringer()
  • Method Details

    • 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 - if processing of json failed
    • endArray

      public JSONStringer endArray() throws JSONException
      Ends encoding the current array.
      Returns:
      this stringer.
      Throws:
      JSONException - if processing of json failed
    • 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 - if processing of json failed
    • endObject

      public JSONStringer endObject() throws JSONException
      Ends encoding the current object.
      Returns:
      this stringer.
      Throws:
      JSONException - if processing of json failed
    • 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 - if processing of json failed
    • value

      public JSONStringer value(boolean value) throws JSONException
      Encodes value to this stringer.
      Parameters:
      value - the value to encode
      Returns:
      this stringer.
      Throws:
      JSONException - if processing of json failed
    • 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 - if processing of json failed
    • 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 processing of json failed
    • 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 - if processing of json failed
    • 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
      Returns:
      the encoded JSON string.