All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.json.Test Maven / Gradle / Ivy

There is a newer version: 10.6
Show newest version
package org.json;

import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.io.StringWriter;
import uk.org.retep.annotations.NoInstance;
import uk.org.retep.annotations.TODO;

/**
 * Test class. This file is not formally a member of the org.json library.
 * It is just a casual test tool.
 */
@TODO( "Move into junit" )
@NoInstance
public class Test
{

    private Test()
    {
    }

    /**
     * Entry point.
     * @param args
     */
    public static void main( String args[] )
    {
        Iterator it;
        JSONArray a;
        JSONObject j;
        JSONStringer jj;
        String s;

        /**
         *  Obj is a typical class that implements JSONString. It also
         *  provides some beanie methods that can be used to
         *  construct a JSONObject. It also demonstrates constructing
         *  a JSONObject with an array of names.
         */
        class Obj
                implements JSONString
        {

            public String aString;
            public double aNumber;
            public boolean aBoolean;

            public Obj( String string, double n, boolean b )
            {
                this.aString = string;
                this.aNumber = n;
                this.aBoolean = b;
            }

            public double getNumber()
            {
                return this.aNumber;
            }

            public String getString()
            {
                return this.aString;
            }

            public boolean isBoolean()
            {
                return this.aBoolean;
            }

            public String getBENT()
            {
                return "All uppercase key";
            }

            public String getX()
            {
                return "x";
            }

            public String toJSONString()
            {
                return "{" + JSONObject.quote( this.aString ) + ":" +
                        JSONObject.doubleToString( this.aNumber ) + "}";
            }

            public String toString()
            {
                return this.getString() + " " + this.getNumber() + " " +
                        this.isBoolean() + "." + this.getBENT() + " " + this.getX();
            }
        }


        Obj obj = new Obj( "A beany object", 42, true );

        try
        {
            j = XML.toJSONObject(
                    "  Ignore the stuff past the end.  " );
            System.out.println( j.toString() );

            s = "{     \"list of lists\" : [         [1, 2, 3],         [4, 5, 6],     ] }";
            j = new JSONObject( s );
            System.out.println( j.toString( 4 ) );
            System.out.println( XML.toString( j ) );

            s = " Basic bread Flour Yeast Water Salt  Mix all ingredients together. Knead thoroughly. Cover with a cloth, and leave for one hour in warm room. Knead again. Place in a bread baking tin. Cover with a cloth, and leave for one hour in warm room. Bake in the oven at 180(degrees)C for 30 minutes.   ";
            j = XML.toJSONObject( s );
            System.out.println( j.toString( 4 ) );
            System.out.println();

            j = JSONML.toJSONObject( s );
            System.out.println( j.toString() );
            System.out.println( JSONML.toString( j ) );
            System.out.println();

            a = JSONML.toJSONArray( s );
            System.out.println( a.toString( 4 ) );
            System.out.println( JSONML.toString( a ) );
            System.out.println();

            s = "

JSONML is a transformation between JSON and XML that preserves ordering of document features.

JSONML can work with JSON arrays or JSON objects.

Three
little
words

"; j = JSONML.toJSONObject( s ); System.out.println( j.toString( 4 ) ); System.out.println( JSONML.toString( j ) ); System.out.println(); a = JSONML.toJSONArray( s ); System.out.println( a.toString( 4 ) ); System.out.println( JSONML.toString( a ) ); System.out.println(); s = "\n Robert\n Smith\n
\n 12345 Sixth Ave\n Anytown\n CA\n 98765-4321\n
\n
"; j = XML.toJSONObject( s ); System.out.println( j.toString( 4 ) ); j = new JSONObject( obj ); System.out.println( j.toString() ); s = "{ \"entity\": { \"imageURL\": \"\", \"name\": \"IXXXXXXXXXXXXX\", \"id\": 12336, \"ratingCount\": null, \"averageRating\": null } }"; j = new JSONObject( s ); System.out.println( j.toString( 2 ) ); jj = new JSONStringer(); s = jj.object().key( "single" ).value( "MARIE HAA'S" ).key( "Johnny" ).value( "MARIE HAA\\'S" ).key( "foo" ).value( "bar" ).key( "baz" ).array().object().key( "quux" ).value( "Thanks, Josh!" ).endObject().endArray().key( "obj keys" ).value( JSONObject.getNames( obj ) ).endObject().toString(); System.out.println( s ); System.out.println( new JSONStringer().object().key( "a" ).array().array().array().value( "b" ).endArray().endArray().endArray().endObject().toString() ); jj = new JSONStringer(); jj.array(); jj.value( 1 ); jj.array(); jj.value( null ); jj.array(); jj.object(); jj.key( "empty-array" ).array().endArray(); jj.key( "answer" ).value( 42 ); jj.key( "null" ).value( null ); jj.key( "false" ).value( false ); jj.key( "true" ).value( true ); jj.key( "big" ).value( 123456789e+88 ); jj.key( "small" ).value( 123456789e-88 ); jj.key( "empty-object" ).object().endObject(); jj.key( "long" ); jj.value( 9223372036854775807L ); jj.endObject(); jj.value( "two" ); jj.endArray(); jj.value( true ); jj.endArray(); jj.value( 98.6 ); jj.value( -100.0 ); jj.object(); jj.endObject(); jj.object(); jj.key( "one" ); jj.value( 1.00 ); jj.endObject(); jj.value( obj ); jj.endArray(); System.out.println( jj.toString() ); System.out.println( new JSONArray( jj.toString() ).toString( 4 ) ); int ar[] = { 1, 2, 3 }; JSONArray ja = new JSONArray( ar ); System.out.println( ja.toString() ); String sa[] = { "aString", "aNumber", "aBoolean" }; j = new JSONObject( obj, sa ); j.put( "Testing JSONString interface", obj ); System.out.println( j.toString( 4 ) ); j = new JSONObject( "{slashes: '///', closetag: '', backslash:'\\\\', ei: {quotes: '\"\\''},eo: {a: '\"quoted\"', b:\"don't\"}, quotes: [\"'\", '\"']}" ); System.out.println( j.toString( 2 ) ); System.out.println( XML.toString( j ) ); System.out.println( "" ); j = new JSONObject( "{foo: [true, false,9876543210, 0.0, 1.00000001, 1.000000000001, 1.00000000000000001," + " .00000000000000001, 2.00, 0.1, 2e100, -32,[],{}, \"string\"], " + " to : null, op : 'Good'," + "ten:10} postfix comment" ); j.put( "String", "98.6" ); j.put( "JSONObject", new JSONObject() ); j.put( "JSONArray", new JSONArray() ); j.put( "int", 57 ); j.put( "double", 123456789012345678901234567890. ); j.put( "true", true ); j.put( "false", false ); j.put( "null", JSONObject.NULL ); j.put( "bool", "true" ); j.put( "zero", -0.0 ); j.put( "\\u2028", "\u2028" ); j.put( "\\u2029", "\u2029" ); a = j.getJSONArray( "foo" ); a.put( 666 ); a.put( 2001.99 ); a.put( "so \"fine\"." ); a.put( "so ." ); a.put( true ); a.put( false ); a.put( new JSONArray() ); a.put( new JSONObject() ); j.put( "keys", JSONObject.getNames( j ) ); System.out.println( j.toString( 4 ) ); System.out.println( XML.toString( j ) ); System.out.println( "String: " + j.getDouble( "String" ) ); System.out.println( " bool: " + j.getBoolean( "bool" ) ); System.out.println( " to: " + j.getString( "to" ) ); System.out.println( " true: " + j.getString( "true" ) ); System.out.println( " foo: " + j.getJSONArray( "foo" ) ); System.out.println( " op: " + j.getString( "op" ) ); System.out.println( " ten: " + j.getInt( "ten" ) ); System.out.println( " oops: " + j.optBoolean( "oops" ) ); s = "First \u0009<content> This is \"content\". 3 JSON does not preserve the sequencing of elements and contents. III T H R E EContent text is an implied structure in XML. JSON does not have implied structure:7everything is explicit.!]]>"; j = XML.toJSONObject( s ); System.out.println( j.toString( 2 ) ); System.out.println( XML.toString( j ) ); System.out.println( "" ); ja = JSONML.toJSONArray( s ); System.out.println( ja.toString( 4 ) ); System.out.println( JSONML.toString( ja ) ); System.out.println( "" ); s = "unodostrestruequatrocinqoseis"; ja = JSONML.toJSONArray( s ); System.out.println( ja.toString( 4 ) ); System.out.println( JSONML.toString( ja ) ); System.out.println( "" ); s = " "; j = XML.toJSONObject( s ); System.out.println( j.toString( 2 ) ); System.out.println( XML.toString( j ) ); System.out.println( "" ); ja = JSONML.toJSONArray( s ); System.out.println( ja.toString( 4 ) ); System.out.println( JSONML.toString( ja ) ); System.out.println( "" ); j = XML.toJSONObject( "Sample BookThis is chapter 1. It is not very long or interesting.This is chapter 2. Although it is longer than chapter 1, it is not any more interesting." ); System.out.println( j.toString( 2 ) ); System.out.println( XML.toString( j ) ); System.out.println( "" ); j = XML.toJSONObject( "" ); System.out.println( j.toString( 2 ) ); System.out.println( XML.toString( j ) ); System.out.println( "" ); j = XML.toJSONObject( " Fred fbs0001 Scerbo B " ); System.out.println( j.toString( 2 ) ); System.out.println( XML.toString( j ) ); System.out.println( "" ); j = XML.toJSONObject( "Repository Address Special Collections LibraryABC UniversityMain Library, 40 Circle DriveOurtown, Pennsylvania17654 USA" ); System.out.println( j.toString() ); System.out.println( XML.toString( j ) ); System.out.println( "" ); j = XML.toJSONObject( "deluxe&"toot"&toot;Aeksbonusbonus2" ); System.out.println( j.toString( 2 ) ); System.out.println( XML.toString( j ) ); System.out.println( "" ); j = HTTP.toJSONObject( "GET / HTTP/1.0\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*\nAccept-Language: en-us\nUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; T312461; Q312461)\nHost: www.nokko.com\nConnection: keep-alive\nAccept-encoding: gzip, deflate\n" ); System.out.println( j.toString( 2 ) ); System.out.println( HTTP.toString( j ) ); System.out.println( "" ); j = HTTP.toJSONObject( "HTTP/1.1 200 Oki Doki\nDate: Sun, 26 May 2002 17:38:52 GMT\nServer: Apache/1.3.23 (Unix) mod_perl/1.26\nKeep-Alive: timeout=15, max=100\nConnection: Keep-Alive\nTransfer-Encoding: chunked\nContent-Type: text/html\n" ); System.out.println( j.toString( 2 ) ); System.out.println( HTTP.toString( j ) ); System.out.println( "" ); j = new JSONObject( "{nix: null, nux: false, null: 'null', 'Request-URI': '/', Method: 'GET', 'HTTP-Version': 'HTTP/1.0'}" ); System.out.println( j.toString( 2 ) ); System.out.println( "isNull: " + j.isNull( "nix" ) ); System.out.println( " has: " + j.has( "nix" ) ); System.out.println( XML.toString( j ) ); System.out.println( HTTP.toString( j ) ); System.out.println( "" ); j = XML.toJSONObject( "" + "\n\n" + "" + "" + "GOOGLEKEY '+search+' 0 10 true false latin1 latin1" + "" + "" ); System.out.println( j.toString( 2 ) ); System.out.println( XML.toString( j ) ); System.out.println( "" ); j = new JSONObject( "{Envelope: {Body: {\"ns1:doGoogleSearch\": {oe: \"latin1\", filter: true, q: \"'+search+'\", key: \"GOOGLEKEY\", maxResults: 10, \"SOAP-ENV:encodingStyle\": \"http://schemas.xmlsoap.org/soap/encoding/\", start: 0, ie: \"latin1\", safeSearch:false, \"xmlns:ns1\": \"urn:GoogleSearch\"}}}}" ); System.out.println( j.toString( 2 ) ); System.out.println( XML.toString( j ) ); System.out.println( "" ); j = CookieList.toJSONObject( " f%oo = b+l=ah ; o;n%40e = t.wo " ); System.out.println( j.toString( 2 ) ); System.out.println( CookieList.toString( j ) ); System.out.println( "" ); j = Cookie.toJSONObject( "f%oo=blah; secure ;expires = April 24, 2002" ); System.out.println( j.toString( 2 ) ); System.out.println( Cookie.toString( j ) ); System.out.println( "" ); j = new JSONObject( "{script: 'It is not allowed in HTML to send a close script tag in a stringso we insert a backslash before the /'}" ); System.out.println( j.toString() ); System.out.println( "" ); JSONTokener jt = new JSONTokener( "{op:'test', to:'session', pre:1}{op:'test', to:'session', pre:2}" ); j = new JSONObject( jt ); System.out.println( j.toString() ); System.out.println( "pre: " + j.optInt( "pre" ) ); int i = jt.skipTo( '{' ); System.out.println( i ); j = new JSONObject( jt ); System.out.println( j.toString() ); System.out.println( "" ); a = CDL.toJSONArray( "No quotes, 'Single Quotes', \"Double Quotes\"\n1,'2',\"3\"\n,'It is \"good,\"', \"It works.\"\n\n" ); System.out.println( CDL.toString( a ) ); System.out.println( "" ); System.out.println( a.toString( 4 ) ); System.out.println( "" ); a = new JSONArray( " [\"\", next is an implied null , , ok,] " ); System.out.println( a.toString() ); System.out.println( "" ); System.out.println( XML.toString( a ) ); System.out.println( "" ); j = new JSONObject( "{ fun => with non-standard forms ; forgiving => This package can be used to parse formats that are similar to but not stricting conforming to JSON; why=To make it easier to migrate existing data to JSON,one = [[1.00]]; uno=[[{1=>1}]];'+':+6e66 ;pluses=+++;empty = '' , 'double':0.666,true: TRUE, false: FALSE, null=NULL;[true] = [[!,@;*]]; string=> o. k. ; \r oct=0666; hex=0x666; dec=666; o=0999; noh=0x0x}" ); System.out.println( j.toString( 4 ) ); System.out.println( "" ); if( j.getBoolean( "true" ) && !j.getBoolean( "false" ) ) { System.out.println( "It's all good" ); } System.out.println( "" ); j = new JSONObject( j, new String[] { "dec", "oct", "hex", "missing" } ); System.out.println( j.toString( 4 ) ); System.out.println( "" ); System.out.println( new JSONStringer().array().value( a ).value( j ).endArray() ); j = new JSONObject( "{string: \"98.6\", long: 2147483648, int: 2147483647, longer: 9223372036854775807, double: 9223372036854775808}" ); System.out.println( j.toString( 4 ) ); System.out.println( "\ngetInt" ); System.out.println( "int " + j.getInt( "int" ) ); System.out.println( "long " + j.getInt( "long" ) ); System.out.println( "longer " + j.getInt( "longer" ) ); System.out.println( "double " + j.getInt( "double" ) ); System.out.println( "string " + j.getInt( "string" ) ); System.out.println( "\ngetLong" ); System.out.println( "int " + j.getLong( "int" ) ); System.out.println( "long " + j.getLong( "long" ) ); System.out.println( "longer " + j.getLong( "longer" ) ); System.out.println( "double " + j.getLong( "double" ) ); System.out.println( "string " + j.getLong( "string" ) ); System.out.println( "\ngetDouble" ); System.out.println( "int " + j.getDouble( "int" ) ); System.out.println( "long " + j.getDouble( "long" ) ); System.out.println( "longer " + j.getDouble( "longer" ) ); System.out.println( "double " + j.getDouble( "double" ) ); System.out.println( "string " + j.getDouble( "string" ) ); j.put( "good sized", 9223372036854775807L ); System.out.println( j.toString( 4 ) ); a = new JSONArray( "[2147483647, 2147483648, 9223372036854775807, 9223372036854775808]" ); System.out.println( a.toString( 4 ) ); System.out.println( "\nKeys: " ); it = j.keys(); while( it.hasNext() ) { s = (String) it.next(); System.out.println( s + ": " + j.getString( s ) ); } System.out.println( "\naccumulate: " ); j = new JSONObject(); j.accumulate( "stooge", "Curly" ); j.accumulate( "stooge", "Larry" ); j.accumulate( "stooge", "Moe" ); a = j.getJSONArray( "stooge" ); a.put( 5, "Shemp" ); System.out.println( j.toString( 4 ) ); System.out.println( "\nwrite:" ); System.out.println( j.write( new StringWriter() ) ); s = "122333"; j = XML.toJSONObject( s ); System.out.println( j.toString( 4 ) ); System.out.println( XML.toString( j ) ); s = "Content of the first chapterContent of the second chapter Content of the first subchapter Content of the second subchapterThird Chapter"; j = XML.toJSONObject( s ); System.out.println( j.toString( 4 ) ); System.out.println( XML.toString( j ) ); a = JSONML.toJSONArray( s ); System.out.println( a.toString( 4 ) ); System.out.println( JSONML.toString( a ) ); Collection c = null; Map m = null; j = new JSONObject( m ); a = new JSONArray( c ); j.append( "stooge", "Joe DeRita" ); j.append( "stooge", "Shemp" ); j.accumulate( "stooges", "Curly" ); j.accumulate( "stooges", "Larry" ); j.accumulate( "stooges", "Moe" ); j.accumulate( "stoogearray", j.get( "stooges" ) ); j.put( "map", m ); j.put( "collection", c ); j.put( "array", a ); a.put( m ); a.put( c ); System.out.println( j.toString( 4 ) ); s = "{plist=Apple; AnimalSmells = { pig = piggish; lamb = lambish; worm = wormy; }; AnimalSounds = { pig = oink; lamb = baa; worm = baa; Lisa = \"Why is the worm talking like a lamb?\" } ; AnimalColors = { pig = pink; lamb = black; worm = pink; } } "; j = new JSONObject( s ); System.out.println( j.toString( 4 ) ); s = " (\"San Francisco\", \"New York\", \"Seoul\", \"London\", \"Seattle\", \"Shanghai\")"; a = new JSONArray( s ); System.out.println( a.toString() ); s = "The content of b and The content of cdoremi"; j = XML.toJSONObject( s ); System.out.println( j.toString( 2 ) ); System.out.println( XML.toString( j ) ); System.out.println( "" ); ja = JSONML.toJSONArray( s ); System.out.println( ja.toString( 4 ) ); System.out.println( JSONML.toString( ja ) ); System.out.println( "" ); System.out.println( "\nTesting Exceptions: " ); System.out.print( "Exception: " ); try { a = new JSONArray(); a.put( Double.NEGATIVE_INFINITY ); a.put( Double.NaN ); System.out.println( a.toString() ); } catch( Exception e ) { System.out.println( e ); } System.out.print( "Exception: " ); try { System.out.println( j.getDouble( "stooge" ) ); } catch( Exception e ) { System.out.println( e ); } System.out.print( "Exception: " ); try { System.out.println( j.getDouble( "howard" ) ); } catch( Exception e ) { System.out.println( e ); } System.out.print( "Exception: " ); try { System.out.println( j.put( null, "howard" ) ); } catch( Exception e ) { System.out.println( e ); } System.out.print( "Exception: " ); try { System.out.println( a.getDouble( 0 ) ); } catch( Exception e ) { System.out.println( e ); } System.out.print( "Exception: " ); try { System.out.println( a.get( -1 ) ); } catch( Exception e ) { System.out.println( e ); } System.out.print( "Exception: " ); try { System.out.println( a.put( Double.NaN ) ); } catch( Exception e ) { System.out.println( e ); } System.out.print( "Exception: " ); try { j = XML.toJSONObject( " " ); } catch( Exception e ) { System.out.println( e ); } System.out.print( "Exception: " ); try { j = XML.toJSONObject( " " ); } catch( Exception e ) { System.out.println( e ); } System.out.print( "Exception: " ); try { j = XML.toJSONObject( "