FileDocCategorySizeDatePackage
JSONArray.javaAPI DocAndroid 1.5 API25530Wed May 06 22:41:04 BST 2009org.json

JSONArray

public class JSONArray extends Object
A JSONArray is an ordered sequence of values. Its external text form is a string wrapped in square brackets with commas separating the values. The internal form is an object having get and opt methods for accessing the values by index, and put methods for adding or replacing values. The values can be any of these types: Boolean, JSONArray, JSONObject, Number, String, or the JSONObject.NULL object.

The constructor can convert a JSON text into a Java object. The toString method converts to JSON text.

A get method returns a value if one can be found, and throws an exception if one cannot be found. An opt method returns a default value instead of throwing an exception, and so is useful for obtaining optional values.

The generic get() and opt() methods return an object which you can cast or query for type. There are also typed get and opt methods that do type checking and type coersion for you.

The texts produced by the toString methods strictly conform to JSON syntax rules. The constructors are more forgiving in the texts they will accept:

  • An extra , (comma) may appear just before the closing bracket.
  • The null value will be inserted when there is , (comma) elision.
  • Strings may be quoted with ' (single quote).
  • Strings do not need to be quoted at all if they do not begin with a quote or single quote, and if they do not contain leading or trailing spaces, and if they do not contain any of these characters: { } [ ] / \ : , = ; # and if they do not look like numbers and if they are not the reserved words true, false, or null.
  • Values can be separated by ; (semicolon) as well as by , (comma).
  • Numbers may have the 0- (octal) or 0x- (hex) prefix.
  • Comments written in the slashshlash, slashstar, and hash conventions will be ignored.
author
JSON.org
version
2

Fields Summary
private ArrayList
myArrayList
The arrayList where the JSONArray's properties are kept.
Constructors Summary
public JSONArray()
Construct an empty JSONArray.

        this.myArrayList = new ArrayList();
    
public JSONArray(JSONTokener x)
Construct a JSONArray from a JSONTokener.

param
x A JSONTokener
throws
JSONException If there is a syntax error.

        this();
        if (x.nextClean() != '[") {
            throw x.syntaxError("A JSONArray text must start with '['");
        }
        if (x.nextClean() == ']") {
            return;
        }
        x.back();
        for (;;) {
            if (x.nextClean() == ',") {
                x.back();
                this.myArrayList.add(null);
            } else {
                x.back();
                this.myArrayList.add(x.nextValue());
            }
            switch (x.nextClean()) {
            case ';":
            case ',":
                if (x.nextClean() == ']") {
                    this.myArrayList.add(null);
                    return;
                }
                x.back();
                break;
            case ']":
                return;
            default:
                throw x.syntaxError("Expected a ',' or ']'");
            }
        }
    
public JSONArray(String string)
Construct a JSONArray from a source sJSON text.

param
string A string that begins with [ (left bracket) and ends with ] (right bracket).
throws
JSONException If there is a syntax error.

        this(new JSONTokener(string));
    
public JSONArray(Collection collection)
Construct a JSONArray from a Collection.

param
collection A Collection.

        this.myArrayList = new ArrayList(collection);
    
Methods Summary
public booleanequals(java.lang.Object object)

        if (!(object instanceof JSONArray)) return false;
        return myArrayList.equals(((JSONArray)object).myArrayList);
    
public java.lang.Objectget(int index)
Get the object value associated with an index.

param
index The index must be between 0 and length() - 1.
return
An object value.
throws
JSONException If there is no value for the index.

        Object o = opt(index);
        if (o == null) {
            throw new JSONException("JSONArray[" + index + "] not found.");
        }
        return o;
    
public booleangetBoolean(int index)
Get the boolean value associated with an index. The string values "true" and "false" are converted to boolean.

param
index The index must be between 0 and length() - 1.
return
The truth.
throws
JSONException If there is no value for the index or if the value is not convertable to boolean.

        Object o = get(index);
        if (o.equals(Boolean.FALSE) ||
                (o instanceof String &&
                ((String)o).equalsIgnoreCase("false"))) {
            return false;
        } else if (o.equals(Boolean.TRUE) ||
                (o instanceof String &&
                ((String)o).equalsIgnoreCase("true"))) {
            return true;
        }
        throw new JSONException("JSONArray[" + index + "] is not a Boolean.");
    
public doublegetDouble(int index)
Get the double value associated with an index.

param
index The index must be between 0 and length() - 1.
return
The value.
throws
JSONException If the key is not found or if the value cannot be converted to a number.

        Object o = get(index);
        try {
            return o instanceof Number ? 
                    ((Number)o).doubleValue() : Double.parseDouble((String)o);
        } catch (Exception e) {
            throw new JSONException("JSONArray[" + index + 
                "] is not a number.");
        }
    
public intgetInt(int index)
Get the int value associated with an index.

param
index The index must be between 0 and length() - 1.
return
The value.
throws
JSONException If the key is not found or if the value cannot be converted to a number. if the value cannot be converted to a number.

        Object o = get(index);
        return o instanceof Number ? 
                ((Number)o).intValue() : (int)getDouble(index);
    
public org.json.JSONArraygetJSONArray(int index)
Get the JSONArray associated with an index.

param
index The index must be between 0 and length() - 1.
return
A JSONArray value.
throws
JSONException If there is no value for the index. or if the value is not a JSONArray

        Object o = get(index);
        if (o instanceof JSONArray) {
            return (JSONArray)o;
        }
        throw new JSONException("JSONArray[" + index +
                "] is not a JSONArray.");
    
public org.json.JSONObjectgetJSONObject(int index)
Get the JSONObject associated with an index.

param
index subscript
return
A JSONObject value.
throws
JSONException If there is no value for the index or if the value is not a JSONObject

        Object o = get(index);
        if (o instanceof JSONObject) {
            return (JSONObject)o;
        }
        throw new JSONException("JSONArray[" + index +
            "] is not a JSONObject.");
    
public longgetLong(int index)
Get the long value associated with an index.

param
index The index must be between 0 and length() - 1.
return
The value.
throws
JSONException If the key is not found or if the value cannot be converted to a number.

        Object o = get(index);
        return o instanceof Number ? 
                ((Number)o).longValue() : (long)getDouble(index);
    
public java.lang.StringgetString(int index)
Get the string associated with an index.

param
index The index must be between 0 and length() - 1.
return
A string value.
throws
JSONException If there is no value for the index.

        return get(index).toString();
    
public booleanisNull(int index)
Determine if the value is null.

param
index The index must be between 0 and length() - 1.
return
true if the value at the index is null, or if there is no value.

        return JSONObject.NULL.equals(opt(index));
    
public java.lang.Stringjoin(java.lang.String separator)
Make a string from the contents of this JSONArray. The separator string is inserted between each element. Warning: This method assumes that the data structure is acyclical.

param
separator A string that will be inserted between the elements.
return
a string.
throws
JSONException If the array contains an invalid number.

        int len = length();
        StringBuilder sb = new StringBuilder();
        
        for (int i = 0; i < len; i += 1) {
            if (i > 0) {
                sb.append(separator);
            }
            sb.append(JSONObject.valueToString(this.myArrayList.get(i)));
        }
        return sb.toString();
    
public intlength()
Get the number of elements in the JSONArray, included nulls.

return
The length (or size).

        return this.myArrayList.size();
    
public java.lang.Objectopt(int index)
Get the optional object value associated with an index.

param
index The index must be between 0 and length() - 1.
return
An object value, or null if there is no object at that index.

        return (index < 0 || index >= length()) ? 
            null : this.myArrayList.get(index);
    
public booleanoptBoolean(int index)
Get the optional boolean value associated with an index. It returns false if there is no value at that index, or if the value is not Boolean.TRUE or the String "true".

param
index The index must be between 0 and length() - 1.
return
The truth.

        return optBoolean(index, false);
    
public booleanoptBoolean(int index, boolean defaultValue)
Get the optional boolean value associated with an index. It returns the defaultValue if there is no value at that index or if it is not a Boolean or the String "true" or "false" (case insensitive).

param
index The index must be between 0 and length() - 1.
param
defaultValue A boolean default.
return
The truth.

        try {
            return getBoolean(index);
        } catch (Exception e) {
            return defaultValue;
        }
    
public doubleoptDouble(int index)
Get the optional double value associated with an index. NaN is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.

param
index The index must be between 0 and length() - 1.
return
The value.

        return optDouble(index, Double.NaN);
    
public doubleoptDouble(int index, double defaultValue)
Get the optional double value associated with an index. The defaultValue is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.

param
index subscript
param
defaultValue The default value.
return
The value.

        try {
            return getDouble(index);
        } catch (Exception e) {
            return defaultValue;
        }
    
public intoptInt(int index)
Get the optional int value associated with an index. Zero is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.

param
index The index must be between 0 and length() - 1.
return
The value.

        return optInt(index, 0);
    
public intoptInt(int index, int defaultValue)
Get the optional int value associated with an index. The defaultValue is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.

param
index The index must be between 0 and length() - 1.
param
defaultValue The default value.
return
The value.

        try {
            return getInt(index);
        } catch (Exception e) {
            return defaultValue;
        }
    
public org.json.JSONArrayoptJSONArray(int index)
Get the optional JSONArray associated with an index.

param
index subscript
return
A JSONArray value, or null if the index has no value, or if the value is not a JSONArray.

        Object o = opt(index);
        return o instanceof JSONArray ? (JSONArray)o : null;
    
public org.json.JSONObjectoptJSONObject(int index)
Get the optional JSONObject associated with an index. Null is returned if the key is not found, or null if the index has no value, or if the value is not a JSONObject.

param
index The index must be between 0 and length() - 1.
return
A JSONObject value.

        Object o = opt(index);
        return o instanceof JSONObject ? (JSONObject)o : null;
    
public longoptLong(int index)
Get the optional long value associated with an index. Zero is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.

param
index The index must be between 0 and length() - 1.
return
The value.

        return optLong(index, 0);
    
public longoptLong(int index, long defaultValue)
Get the optional long value associated with an index. The defaultValue is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.

param
index The index must be between 0 and length() - 1.
param
defaultValue The default value.
return
The value.

        try {
            return getLong(index);
        } catch (Exception e) {
            return defaultValue;
        }
    
public java.lang.StringoptString(int index)
Get the optional string value associated with an index. It returns an empty string if there is no value at that index. If the value is not a string and is not null, then it is coverted to a string.

param
index The index must be between 0 and length() - 1.
return
A String value.

        return optString(index, "");
    
public java.lang.StringoptString(int index, java.lang.String defaultValue)
Get the optional string associated with an index. The defaultValue is returned if the key is not found.

param
index The index must be between 0 and length() - 1.
param
defaultValue The default value.
return
A String value.

        Object o = opt(index);
        return o != null ? o.toString() : defaultValue;
    
public org.json.JSONArrayput(boolean value)
Append a boolean value. This increases the array's length by one.

param
value A boolean value.
return
this.

        put(Boolean.valueOf(value));
        return this;
    
public org.json.JSONArrayput(double value)
Append a double value. This increases the array's length by one.

param
value A double value.
throws
JSONException if the value is not finite.
return
this.

        Double d = new Double(value);
        JSONObject.testValidity(d);
        put(d);
        return this;
    
public org.json.JSONArrayput(int value)
Append an int value. This increases the array's length by one.

param
value An int value.
return
this.

        put(new Integer(value));
        return this;
    
public org.json.JSONArrayput(long value)
Append an long value. This increases the array's length by one.

param
value A long value.
return
this.

        put(new Long(value));
        return this;
    
public org.json.JSONArrayput(java.lang.Object value)
Append an object value. This increases the array's length by one.

param
value An object value. The value should be a Boolean, Double, Integer, JSONArray, JSObject, Long, or String, or the JSONObject.NULL object.
return
this.

        this.myArrayList.add(value);
        return this;
    
public org.json.JSONArrayput(int index, boolean value)
Put or replace a boolean value in the JSONArray. If the index is greater than the length of the JSONArray, then null elements will be added as necessary to pad it out.

param
index The subscript.
param
value A boolean value.
return
this.
throws
JSONException If the index is negative.

        put(index, Boolean.valueOf(value));
        return this;
    
public org.json.JSONArrayput(int index, double value)
Put or replace a double value. If the index is greater than the length of the JSONArray, then null elements will be added as necessary to pad it out.

param
index The subscript.
param
value A double value.
return
this.
throws
JSONException If the index is negative or if the value is not finite.

        put(index, new Double(value));
        return this;
    
public org.json.JSONArrayput(int index, int value)
Put or replace an int value. If the index is greater than the length of the JSONArray, then null elements will be added as necessary to pad it out.

param
index The subscript.
param
value An int value.
return
this.
throws
JSONException If the index is negative.

        put(index, new Integer(value));
        return this;
    
public org.json.JSONArrayput(int index, long value)
Put or replace a long value. If the index is greater than the length of the JSONArray, then null elements will be added as necessary to pad it out.

param
index The subscript.
param
value A long value.
return
this.
throws
JSONException If the index is negative.

        put(index, new Long(value));
        return this;
    
public org.json.JSONArrayput(int index, java.lang.Object value)
Put or replace an object value in the JSONArray. If the index is greater than the length of the JSONArray, then null elements will be added as necessary to pad it out.

param
index The subscript.
param
value The value to put into the array.
return
this.
throws
JSONException If the index is negative or if the the value is an invalid number.

        JSONObject.testValidity(value);
        if (index < 0) {
            throw new JSONException("JSONArray[" + index + "] not found.");
        } 
        if (index < length()) {
            this.myArrayList.set(index, value);
        } else {
            while (index != length()) {
                put(null);
            }
            put(value);
        }
        return this;
    
public org.json.JSONObjecttoJSONObject(org.json.JSONArray names)
Produce a JSONObject by combining a JSONArray of names with the values of this JSONArray.

param
names A JSONArray containing a list of key strings. These will be paired with the values.
return
A JSONObject, or null if there are no names or if this JSONArray has no values.
throws
JSONException If any of the names are null.

        if (names == null || names.length() == 0 || length() == 0) {
            return null;
        }
        JSONObject jo = new JSONObject();
        for (int i = 0; i < names.length(); i += 1) {
            jo.put(names.getString(i), this.opt(i));
        }
        return jo;
    
public java.lang.StringtoString()
Make an JSON text of this JSONArray. For compactness, no unnecessary whitespace is added. If it is not possible to produce a syntactically correct JSON text then null will be returned instead. This could occur if the array contains an invalid number.

Warning: This method assumes that the data structure is acyclical.

return
a printable, displayable, transmittable representation of the array.

        try {
            return '[" + join(",") + ']";
        } catch (Exception e) {
            return null;
        }
    
public java.lang.StringtoString(int indentFactor)
Make a prettyprinted JSON text of this JSONArray. Warning: This method assumes that the data structure is acyclical.

param
indentFactor The number of spaces to add to each level of indentation.
return
a printable, displayable, transmittable representation of the object, beginning with [ (left bracket) and ending with ] (right bracket).
throws
JSONException

        return toString(indentFactor, 0);
    
java.lang.StringtoString(int indentFactor, int indent)
Make a prettyprinted JSON text of this JSONArray. Warning: This method assumes that the data structure is acyclical.

param
indentFactor The number of spaces to add to each level of indentation.
param
indent The indention of the top level.
return
a printable, displayable, transmittable representation of the array.
throws
JSONException

        int len = length();
        if (len == 0) {
            return "[]";
        }
        int i;
        StringBuilder sb = new StringBuilder("[");
        if (len == 1) {
            sb.append(JSONObject.valueToString(this.myArrayList.get(0),
                    indentFactor, indent));
        } else {
            int newindent = indent + indentFactor;
            sb.append('\n");
            for (i = 0; i < len; i += 1) {
                if (i > 0) {
                    sb.append(",\n");
                }
                for (int j = 0; j < newindent; j += 1) {
                    sb.append(' ");
                }
                sb.append(JSONObject.valueToString(this.myArrayList.get(i),
                        indentFactor, newindent));
            }
            sb.append('\n");
            for (i = 0; i < indent; i += 1) {
                sb.append(' ");
            }
        }
        sb.append(']");
        return sb.toString();