public class JSONObject extends Object
JSONObjects, JSONArrays, Strings, Booleans, Integers, Longs, Doubles or NULL.
 Values may not be null, NaNs, infinities, or of any type not listed here.
 This class can coerce values to another type when requested.
Number types will
       be coerced using doubleValue. Strings
       that can be coerced using Double.valueOf(String) will be.
   Number types will
       be coerced using intValue. Strings
       that can be coerced using Double.valueOf(String) will be,
       and then cast to int.
   Number types will
       be coerced using longValue. Strings
       that can be coerced using Double.valueOf(String) will be,
       and then cast to long. This two-step conversion is lossy for very
       large values. For example, the string "9223372036854775806" yields the
       long 9223372036854775807.
   String.valueOf(Object). Although null cannot be
       coerced, the sentinel value NULL is coerced to the
       string "null".
 This class can look up both mandatory and optional values:
getType() to retrieve a mandatory value. This
       fails with a JSONException if the requested name has no value
       or if the value cannot be coerced to the requested type.
   optType() to retrieve an optional value. This
       returns a system- or user-supplied default if the requested name has no
       value or if the value cannot be coerced to the requested type.
 Warning: this class represents null in two incompatible
 ways: the standard Java null reference, and the sentinel value NULL. In particular, calling put(name, null) removes the
 named entry from the object but put(name, JSONObject.NULL) stores an
 entry whose value is JSONObject.NULL.
 
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.
| Modifier and Type | Field and Description | 
|---|---|
static Object | 
NULL
A sentinel value used to explicitly define a name with no value. 
 | 
| Constructor and Description | 
|---|
JSONObject()
Creates a  
JSONObject with no name/value mappings. | 
JSONObject(JSONObject copyFrom,
          String[] names)
Creates a new  
JSONObject by copying mappings for the listed names
 from the given object. | 
JSONObject(JSONTokener readFrom)
Creates a new  
JSONObject with name/value mappings from the next
 object in the tokener. | 
JSONObject(Map copyFrom)
Creates a new  
JSONObject by copying all name/value mappings from
 the given map. | 
JSONObject(String json)
Creates a new  
JSONObject with name/value mappings from the JSON
 string. | 
| Modifier and Type | Method and Description | 
|---|---|
JSONObject | 
accumulate(String name,
          Object value)
Appends  
value to the array already mapped to name. | 
JSONObject | 
append(String name,
      Object value)
Appends values to the array mapped to  
name. | 
Object | 
get(String name)
Returns the value mapped by  
name, or throws if no such mapping exists. | 
boolean | 
getBoolean(String name)
Returns the value mapped by  
name if it exists and is a boolean or
 can be coerced to a boolean, or throws otherwise. | 
double | 
getDouble(String name)
Returns the value mapped by  
name if it exists and is a double or
 can be coerced to a double, or throws otherwise. | 
int | 
getInt(String name)
Returns the value mapped by  
name if it exists and is an int or
 can be coerced to an int, or throws otherwise. | 
JSONArray | 
getJSONArray(String name)
Returns the value mapped by  
name if it exists and is a JSONArray, or throws otherwise. | 
JSONObject | 
getJSONObject(String name)
Returns the value mapped by  
name if it exists and is a JSONObject, or throws otherwise. | 
long | 
getLong(String name)
Returns the value mapped by  
name if it exists and is a long or
 can be coerced to a long, or throws otherwise. | 
String | 
getString(String name)
Returns the value mapped by  
name if it exists, coercing it if
 necessary, or throws if no such mapping exists. | 
boolean | 
has(String name)
Returns true if this object has a mapping for  
name. | 
boolean | 
isNull(String name)
Returns true if this object has no mapping for  
name or if it has
 a mapping whose value is NULL. | 
Iterator<String> | 
keys()
Returns an iterator of the  
String names in this object. | 
Set<String> | 
keySet()
Returns the set of  
String names in this object. | 
int | 
length()
Returns the number of name/value mappings in this object. 
 | 
JSONArray | 
names()
Returns an array containing the string names in this object. 
 | 
static String | 
numberToString(Number number)
Encodes the number as a JSON string. 
 | 
Object | 
opt(String name)
Returns the value mapped by  
name, or null if no such mapping
 exists. | 
boolean | 
optBoolean(String name)
Returns the value mapped by  
name if it exists and is a boolean or
 can be coerced to a boolean, or false otherwise. | 
boolean | 
optBoolean(String name,
          boolean fallback)
Returns the value mapped by  
name if it exists and is a boolean or
 can be coerced to a boolean, or fallback otherwise. | 
double | 
optDouble(String name)
Returns the value mapped by  
name if it exists and is a double or
 can be coerced to a double, or NaN otherwise. | 
double | 
optDouble(String name,
         double fallback)
Returns the value mapped by  
name if it exists and is a double or
 can be coerced to a double, or fallback otherwise. | 
int | 
optInt(String name)
Returns the value mapped by  
name if it exists and is an int or
 can be coerced to an int, or 0 otherwise. | 
int | 
optInt(String name,
      int fallback)
Returns the value mapped by  
name if it exists and is an int or
 can be coerced to an int, or fallback otherwise. | 
JSONArray | 
optJSONArray(String name)
Returns the value mapped by  
name if it exists and is a JSONArray, or null otherwise. | 
JSONObject | 
optJSONObject(String name)
Returns the value mapped by  
name if it exists and is a JSONObject, or null otherwise. | 
long | 
optLong(String name)
Returns the value mapped by  
name if it exists and is a long or
 can be coerced to a long, or 0 otherwise. | 
long | 
optLong(String name,
       long fallback)
Returns the value mapped by  
name if it exists and is a long or
 can be coerced to a long, or fallback otherwise. | 
String | 
optString(String name)
Returns the value mapped by  
name if it exists, coercing it if
 necessary, or the empty string if no such mapping exists. | 
String | 
optString(String name,
         String fallback)
Returns the value mapped by  
name if it exists, coercing it if
 necessary, or fallback if no such mapping exists. | 
JSONObject | 
put(String name,
   boolean value)
Maps  
name to value, clobbering any existing name/value
 mapping with the same name. | 
JSONObject | 
put(String name,
   double value)
Maps  
name to value, clobbering any existing name/value
 mapping with the same name. | 
JSONObject | 
put(String name,
   int value)
Maps  
name to value, clobbering any existing name/value
 mapping with the same name. | 
JSONObject | 
put(String name,
   long value)
Maps  
name to value, clobbering any existing name/value
 mapping with the same name. | 
JSONObject | 
put(String name,
   Object value)
Maps  
name to value, clobbering any existing name/value
 mapping with the same name. | 
JSONObject | 
putOpt(String name,
      Object value)
Equivalent to  
put(name, value) when both parameters are non-null;
 does nothing otherwise. | 
static String | 
quote(String data)
Encodes  
data as a JSON string. | 
Object | 
remove(String name)
Removes the named mapping if it exists; does nothing otherwise. 
 | 
JSONArray | 
toJSONArray(JSONArray names)
Returns an array with the values corresponding to  
names. | 
String | 
toString()
Encodes this object as a compact JSON string, such as: 
 | 
String | 
toString(int indentSpaces)
Encodes this object as a human readable JSON string for debugging, such
 as: 
 | 
static Object | 
wrap(Object o)
Wraps the given object if necessary. 
 | 
@NonNull public static final Object NULL
null, names with this value:
 names() array
   keys() iterator
   true for has(String)
   get(String)
   This value violates the general contract of Object.equals(java.lang.Object) by
 returning true when compared to null. Its toString()
 method returns "null".
public JSONObject()
JSONObject with no name/value mappings.public JSONObject(@NonNull
                  Map copyFrom)
JSONObject by copying all name/value mappings from
 the given map.copyFrom - a map whose keys are of type String and whose
                 values are of supported types.NullPointerException - if any of the map's keys are null.public JSONObject(@NonNull
                  JSONTokener readFrom)
           throws JSONException
JSONObject with name/value mappings from the next
 object in the tokener.readFrom - a tokener whose nextValue() method will yield a
                 JSONObject.JSONException - if the parse fails or doesn't yield a
                       JSONObject.public JSONObject(@NonNull
                  String json)
           throws JSONException
JSONObject with name/value mappings from the JSON
 string.json - a JSON-encoded string containing an object.JSONException - if the parse fails or doesn't yield a JSONObject.public JSONObject(@NonNull
                  JSONObject copyFrom,
                  @NonNull
                  String[] names)
           throws JSONException
JSONObject by copying mappings for the listed names
 from the given object. Names that aren't present in copyFrom will
 be skipped.JSONExceptionpublic int length()
@NonNull public JSONObject put(@NonNull String name, boolean value) throws JSONException
name to value, clobbering any existing name/value
 mapping with the same name.JSONException@NonNull public JSONObject put(@NonNull String name, double value) throws JSONException
name to value, clobbering any existing name/value
 mapping with the same name.value - a finite value. May not be NaNs or
              infinities.JSONException@NonNull public JSONObject put(@NonNull String name, int value) throws JSONException
name to value, clobbering any existing name/value
 mapping with the same name.JSONException@NonNull public JSONObject put(@NonNull String name, long value) throws JSONException
name to value, clobbering any existing name/value
 mapping with the same name.JSONException@NonNull public JSONObject put(@NonNull String name, @Nullable Object value) throws JSONException
name to value, clobbering any existing name/value
 mapping with the same name. If the value is null, any existing
 mapping for name is removed.value - a JSONObject, JSONArray, String, Boolean,
              Integer, Long, Double, NULL, or null. May not be
              NaNs or infinities.JSONException@NonNull public JSONObject putOpt(@Nullable String name, @Nullable Object value) throws JSONException
put(name, value) when both parameters are non-null;
 does nothing otherwise.JSONException@NonNull public JSONObject accumulate(@NonNull String name, @Nullable Object value) throws JSONException
value to the array already mapped to name. If
 this object has no mapping for name, this inserts a new mapping.
 If the mapping exists but its value is not an array, the existing
 and new values are inserted in order into a new array which is itself
 mapped to name. In aggregate, this allows values to be added to a
 mapping one at a time.
  Note that append(String, Object) provides better semantics.
 In particular, the mapping for name will always be a
 JSONArray. Using accumulate will result in either a
 JSONArray or a mapping whose type is the type of value
 depending on the number of calls to it.
value - a JSONObject, JSONArray, String, Boolean,
              Integer, Long, Double, NULL or null. May not be NaNs or infinities.JSONExceptionpublic JSONObject append(String name, Object value) throws JSONException
name. A new JSONArray
 mapping for name will be inserted if no mapping exists. If the existing
 mapping for name is not a JSONArray, a JSONException
 will be thrown.JSONException - if name is null or if the mapping for
                       name is non-null and is not a JSONArray.@Nullable public Object remove(@Nullable String name)
name, or null if there was
 no such mapping.public boolean isNull(@Nullable
                      String name)
name or if it has
 a mapping whose value is NULL.public boolean has(@Nullable
                   String name)
name. The mapping
 may be NULL.@NonNull public Object get(@NonNull String name) throws JSONException
name, or throws if no such mapping exists.JSONException - if no such mapping exists.@Nullable public Object opt(@Nullable String name)
name, or null if no such mapping
 exists.public boolean getBoolean(@NonNull
                          String name)
                   throws JSONException
name if it exists and is a boolean or
 can be coerced to a boolean, or throws otherwise.JSONException - if the mapping doesn't exist or cannot be coerced
                       to a boolean.public boolean optBoolean(@Nullable
                          String name)
name if it exists and is a boolean or
 can be coerced to a boolean, or false otherwise.public boolean optBoolean(@Nullable
                          String name,
                          boolean fallback)
name if it exists and is a boolean or
 can be coerced to a boolean, or fallback otherwise.public double getDouble(@NonNull
                        String name)
                 throws JSONException
name if it exists and is a double or
 can be coerced to a double, or throws otherwise.JSONException - if the mapping doesn't exist or cannot be coerced
                       to a double.public double optDouble(@Nullable
                        String name)
name if it exists and is a double or
 can be coerced to a double, or NaN otherwise.public double optDouble(@Nullable
                        String name,
                        double fallback)
name if it exists and is a double or
 can be coerced to a double, or fallback otherwise.public int getInt(@NonNull
                  String name)
           throws JSONException
name if it exists and is an int or
 can be coerced to an int, or throws otherwise.JSONException - if the mapping doesn't exist or cannot be coerced
                       to an int.public int optInt(@Nullable
                  String name)
name if it exists and is an int or
 can be coerced to an int, or 0 otherwise.public int optInt(@Nullable
                  String name,
                  int fallback)
name if it exists and is an int or
 can be coerced to an int, or fallback otherwise.public long getLong(@NonNull
                    String name)
             throws JSONException
name if it exists and is a long or
 can be coerced to a long, or throws otherwise.
 Note that JSON represents numbers as doubles,
 so this is lossy; use strings to transfer numbers via JSON.JSONException - if the mapping doesn't exist or cannot be coerced
                       to a long.public long optLong(@Nullable
                    String name)
name if it exists and is a long or
 can be coerced to a long, or 0 otherwise. Note that JSON represents numbers as doubles,
 so this is lossy; use strings to transfer numbers via JSON.public long optLong(@Nullable
                    String name,
                    long fallback)
name if it exists and is a long or
 can be coerced to a long, or fallback otherwise. Note that JSON represents
 numbers as doubles, so this is lossy; use strings to transfer
 numbers via JSON.@NonNull public String getString(@NonNull String name) throws JSONException
name if it exists, coercing it if
 necessary, or throws if no such mapping exists.JSONException - if no such mapping exists.@NonNull public String optString(@Nullable String name)
name if it exists, coercing it if
 necessary, or the empty string if no such mapping exists.@NonNull public String optString(@Nullable String name, @NonNull String fallback)
name if it exists, coercing it if
 necessary, or fallback if no such mapping exists.@NonNull public JSONArray getJSONArray(@NonNull String name) throws JSONException
name if it exists and is a JSONArray, or throws otherwise.JSONException - if the mapping doesn't exist or is not a JSONArray.@Nullable public JSONArray optJSONArray(@Nullable String name)
name if it exists and is a JSONArray, or null otherwise.@NonNull public JSONObject getJSONObject(@NonNull String name) throws JSONException
name if it exists and is a JSONObject, or throws otherwise.JSONException - if the mapping doesn't exist or is not a JSONObject.@Nullable public JSONObject optJSONObject(@Nullable String name)
name if it exists and is a JSONObject, or null otherwise.@Nullable public JSONArray toJSONArray(@Nullable JSONArray names) throws JSONException
names. The
 array contains null for names that aren't mapped. This method returns
 null if names is either null or empty.JSONException@NonNull public Iterator<String> keys()
String names in this object. The
 returned iterator supports remove, which will
 remove the corresponding mapping from this object. If this object is
 modified after the iterator is returned, the iterator's behavior is
 undefined. The order of the keys is undefined.public Set<String> keySet()
String names in this object. The returned set
 is a view of the keys in this object. Set.remove(Object) will remove
 the corresponding mapping from this object and set iterator behaviour
 is undefined if this object is modified after it is returned.
 
 See keys().
@Nullable public JSONArray names()
@NonNull public String toString()
{"query":"Pizza","locations":[94043,90210]}@NonNull public String toString(int indentSpaces) throws JSONException
 {
     "query": "Pizza",
     "locations": [
         94043,
         90210
     ]
 }indentSpaces - the number of spaces to indent for each level of
                     nesting.JSONException@NonNull public static String numberToString(@NonNull Number number) throws JSONException
number - a finite value. May not be NaNs or
               infinities.JSONException@NonNull public static String quote(@Nullable String data)
data as a JSON string. This applies quotes and any
 necessary character escaping.data - the string to encode. Null will be interpreted as an empty
             string.@Nullable public static Object wrap(@Nullable Object o)
If the object is null or , returns NULL.
 If the object is a JSONArray or JSONObject, no wrapping is necessary.
 If the object is NULL, no wrapping is necessary.
 If the object is an array or Collection, returns an equivalent JSONArray.
 If the object is a Map, returns an equivalent JSONObject.
 If the object is a primitive wrapper type or String, returns the object.
 Otherwise if the object is from a java package, returns the result of toString.
 If wrapping fails, returns null.