package org.json; import junit.framework.TestCase; public class Test extends TestCase { /*{ "JSONArray": [], "JSONObject": {}, "String": "98.6", "\\u2028": "\u2028", "\\u2029": "\u2029", "bool": "true", "double": 1.2345678901234568E29, "false": false, "foo": [ true, false, 9876543210, 0, 1.00000001, 1.000000000001, 1, 1.0E-17, 2, 0.1, 2.0E100, -32, [], {}, "string", 666, 2001.99, "so \"fine\".", "so <fine>.", true, false, [], {} ], "int": 57, "keys": [ "foo", "op", "String", "JSONObject", "\\u2028", "ten", "true", "int", "bool", "\\u2029", "to", "double", "JSONArray", "null", "zero", "false" ], "null": null, "op": "Good", "ten": 10, "to": null, "true": true, "zero": -0 } String: 98.6 bool: true to: null true: true foo: [true,false,9876543210,0,1.00000001,1.000000000001,1,1.0E-17,2,0.1,2.0E100,-32,[],{},"string",666,2001.99,"so \"fine\".","so <fine>.",true,false,[],{}] op: Good ten: 10 oops: false */ public void testReadJSON() { JSONArray jsonArray; JSONObject jsonObj; try { jsonObj = 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"); jsonObj.put("String", "98.6"); jsonObj.put("JSONObject", new JSONObject()); jsonObj.put("JSONArray", new JSONArray()); jsonObj.put("int", 57); jsonObj.put("double", 123456789012345678901234567890.); jsonObj.put("true", true); jsonObj.put("false", false); jsonObj.put("null", JSONObject.NULL); jsonObj.put("bool", "true"); jsonObj.put("zero", -0.0); jsonObj.put("\\u2028", "\u2028"); jsonObj.put("\\u2029", "\u2029"); jsonArray = jsonObj.getJSONArray("foo"); jsonArray.put(666); jsonArray.put(2001.99); jsonArray.put("so \"fine\"."); jsonArray.put("so <fine>."); jsonArray.put(true); jsonArray.put(false); jsonArray.put(new JSONArray()); jsonArray.put(new JSONObject()); jsonObj.put("keys", JSONObject.getNames(jsonObj)); System.out.println(jsonObj.toString(4)); System.out.println("String: " + jsonObj.getDouble("String")); System.out.println(" bool: " + jsonObj.getBoolean("bool")); System.out.println(" to: " + jsonObj.getString("to")); System.out.println(" true: " + jsonObj.getString("true")); System.out.println(" foo: " + jsonObj.getJSONArray("foo")); System.out.println(" op: " + jsonObj.getString("op")); System.out.println(" ten: " + jsonObj.getInt("ten")); System.out.println(" oops: " + jsonObj.optBoolean("oops")); } catch (JSONException e) { e.printStackTrace(); } } /*{ "Testing JSONString interface": {"A beany object":42}, "aBoolean": true, "aNumber": 42, "aString": "A beany object" } */ public void testBean() { Obj obj = new Obj("A beany object", 42, true); JSONObject jsonObj; String sa[] = { "aString", "aNumber", "aBoolean" }; jsonObj = new JSONObject(obj, sa); try { jsonObj.put("Testing JSONString interface", obj); System.out.println(jsonObj.toString(4)); } catch (JSONException e) { e.printStackTrace(); } } /* * [1,2,3] */ public void testArr() { int ar[] = { 1, 2, 3 }; JSONArray ja; try { ja = new JSONArray(ar); System.out.println(ja.toString()); } catch (JSONException e) { e.printStackTrace(); } } /* {"single":"MARIE HAA'S","Johnny":"MARIE HAA\\'S","foo":"bar","baz":[{"quux":"Thanks, Josh!"}],"obj keys":"11"} {"a":[[["b"]]]} */ public void testJsonStringer() { JSONStringer jsonStringer; String str; jsonStringer = new JSONStringer(); try { str = jsonStringer.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("11").endObject().toString(); System.out.println(str); System.out.println(new JSONStringer().object().key("a").array() .array().array().value("b").endArray().endArray() .endArray().endObject().toString()); } catch (JSONException e) { e.printStackTrace(); } } /* {"recipe": { "cook_time": "3 hours", "ingredient": [ { "amount": 4, "content": "Water", "state": "warm", "unit": "dL" }, { "amount": 1, "content": "Salt", "unit": "teaspoon" } ], "instructions": {"step": [ "Knead thoroughly.", "Knead again." ]}, "name": "bread", "prep_time": "5 mins", "title": "Basic bread" }} {"cook_time":"3 hours","prep_time":"5 mins","childNodes":[{"childNodes":["Basic bread"],"tagName":"title"},{"amount":4,"childNodes":["Water"],"unit":"dL","state":"warm","tagName":"ingredient"},{"amount":1,"childNodes":["Salt"],"unit":"teaspoon","tagName":"ingredient"},{"childNodes":[{"childNodes":["Knead thoroughly."],"tagName":"step"},{"childNodes":["Knead again."],"tagName":"step"}],"tagName":"instructions"}],"name":"bread","tagName":"recipe"} <recipe cook_time="3 hours" prep_time="5 mins" name="bread"><title>Basic bread</title><ingredient amount="4" unit="dL" state="warm">Water</ingredient><ingredient amount="1" unit="teaspoon">Salt</ingredient><instructions><step>Knead thoroughly.</step><step>Knead again.</step></instructions></recipe> [ "recipe", { "cook_time": "3 hours", "name": "bread", "prep_time": "5 mins" }, [ "title", "Basic bread" ], [ "ingredient", { "amount": 4, "state": "warm", "unit": "dL" }, "Water" ], [ "ingredient", { "amount": 1, "unit": "teaspoon" }, "Salt" ], [ "instructions", [ "step", "Knead thoroughly." ], [ "step", "Knead again." ] ] ] <recipe cook_time="3 hours" prep_time="5 mins" name="bread"><title>Basic bread</title><ingredient amount="4" unit="dL" state="warm">Water</ingredient><ingredient amount="1" unit="teaspoon">Salt</ingredient><instructions><step>Knead thoroughly.</step><step>Knead again.</step></instructions></recipe> */ public void testXML() { JSONArray jsonArray; JSONObject jsonObj; String str; str = "<recipe name=\"bread\" prep_time=\"5 mins\" cook_time=\"3 hours\">" + " <title>Basic bread</title> " + " <ingredient amount=\"4\" unit=\"dL\" state=\"warm\">Water</ingredient> " + " <ingredient amount=\"1\" unit=\"teaspoon\">Salt</ingredient> " + " <instructions> " + " <step>Knead thoroughly.</step>" + " <step>Knead again.</step> " + " </instructions> " + "</recipe> "; //XML转换成JSON对象 try { jsonObj = XML.toJSONObject(str); System.out.println(jsonObj.toString(4));//JSON格式化输出 System.out.println(); jsonObj = JSONML.toJSONObject(str); System.out.println(jsonObj.toString()); System.out.println(JSONML.toString(jsonObj)); System.out.println(); jsonArray = JSONML.toJSONArray(str); System.out.println(jsonArray.toString(4)); System.out.println(JSONML.toString(jsonArray)); System.out.println(); } catch (JSONException e) { e.printStackTrace(); } } /* {"list of lists": [ [ 1, 2 ], [ 4, 5 ] ]} <list of lists><array>1</array><array>2</array></list of lists><list of lists><array>4</array><array>5</array></list of lists> */ public void testJsonStr() { JSONObject jsonObj; String str; str = "{ \"list of lists\" : [ [1, 2], [4, 5], ] }"; //以JSON串构造JSON对象 try { jsonObj = new JSONObject(str); //JSON对象格式化输出 System.out.println(jsonObj.toString(4)); //JSON对象到XML的转换 System.out.println(XML.toString(jsonObj)); } catch (JSONException e) { e.printStackTrace(); } } } 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(); } }