A JSONArray is an ordered sequence of values. Its external form is a string
 wrapped in square brackets with commas between 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 external form string into an
 internal form Java object. The toString() method creates an external
 form string.
 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 typing
 checking and type coersion for you.
 The texts produced by the toString() methods are very strict.
 The constructors are more forgiving in the texts they will accept.
 An extra comma may appear just before the closing bracket.
 Strings may be quoted with single quotes.
 Strings do not need to be quoted at all if they do not contain leading
     or trailing spaces, and if they do not contain any of these characters:
     { } [ ] / \ : ,
 Numbers may have the 0- (octal) or 0x- (hex) prefix.
 Public Domain 2002 JSON.org
 Ported to C# by Are Bjolseth, teleplan.no