diff --git a/JSONML.java b/JSONML.java index 95c284f..3707191 100755 --- a/JSONML.java +++ b/JSONML.java @@ -32,7 +32,7 @@ import java.util.Iterator; * JSONObject, and to covert a JSONArray or JSONObject into an XML text using * the JsonML transform. * @author JSON.org - * @version 2010-12-23 + * @version 2011-10-03 */ public class JSONML { @@ -45,8 +45,11 @@ public class JSONML { * @return A JSONArray if the value is the outermost tag, otherwise null. * @throws JSONException */ - private static Object parse(XMLTokener x, boolean arrayForm, - JSONArray ja) throws JSONException { + private static Object parse( + XMLTokener x, + boolean arrayForm, + JSONArray ja + ) throws JSONException { String attribute; char c; String closeTag = null; @@ -439,8 +442,10 @@ public class JSONML { if (object != null) { if (object instanceof String) { sb.append(XML.escape(object.toString())); - } else if (object instanceof JSONObject) { - sb.append(toString((JSONObject)object)); + } else if (object instanceof Number) { + sb.append(object.toString()); + } else if (object instanceof JSONObject) { + sb.append(toString((JSONObject)object)); } else if (object instanceof JSONArray) { sb.append(toString((JSONArray)object)); } diff --git a/Test.java b/Test.java index 4cd1ace..2686e9c 100755 --- a/Test.java +++ b/Test.java @@ -40,7 +40,7 @@ SOFTWARE. * comparisons of .toString to a string literal are likely to fail. * * @author JSON.org - * @version 2011-05-22 + * @version 2011-10-03 */ public class Test extends TestCase { public Test(String name) { @@ -91,7 +91,11 @@ public class Test extends TestCase { Beany beanie = new Beany("A beany object", 42, true); - string = "[0.1]"; + string = "[001122334455]"; + jsonarray = new JSONArray(string); + assertEquals("[1122334455]", jsonarray.toString()); + + string = "[00.10]"; jsonarray = new JSONArray(string); assertEquals("[0.1]", jsonarray.toString()); @@ -154,16 +158,17 @@ public class Test extends TestCase { jsonarray.toString(4)); assertEquals("

JSONML is a transformation betweenJSONandXMLthat preserves ordering of document features.

JSONML can work with JSON arrays or JSON objects.

Three
little
words

", JSONML.toString(jsonarray)); + + string = "{\"xmlns:soap\":\"http://www.w3.org/2003/05/soap-envelope\",\"tagName\":\"soap:Envelope\",\"childNodes\":[{\"tagName\":\"soap:Header\"},{\"tagName\":\"soap:Body\",\"childNodes\":[{\"tagName\":\"ws:listProducts\",\"childNodes\":[{\"tagName\":\"ws:delay\",\"childNodes\":[1]}]}]}],\"xmlns:ws\":\"http://warehouse.acme.com/ws\"}"; + jsonobject = new JSONObject(string); + assertEquals("1", + JSONML.toString(jsonobject)); string = "\n Robert\n Smith\n
\n 12345 Sixth Ave\n Anytown\n CA\n 98765-4321\n
\n
"; jsonobject = XML.toJSONObject(string); assertEquals("{\"person\": {\n \"lastName\": \"Smith\",\n \"address\": {\n \"postalCode\": \"98765-4321\",\n \"street\": \"12345 Sixth Ave\",\n \"state\": \"CA\",\n \"type\": \"home\",\n \"city\": \"Anytown\"\n },\n \"created\": \"2006-11-11T19:23\",\n \"firstName\": \"Robert\",\n \"modified\": \"2006-12-31T23:59\"\n}}", jsonobject.toString(4)); - jsonobject = new JSONObject(beanie); - assertEquals("{\"string\":\"A beany object\",\"BENT\":\"All uppercase key\",\"boolean\":true,\"number\":42,\"x\":\"x\"}" - , jsonobject.toString()); - string = "{ \"entity\": { \"imageURL\": \"\", \"name\": \"IXXXXXXXXXXXXX\", \"id\": 12336, \"ratingCount\": null, \"averageRating\": null } }"; jsonobject = new JSONObject(string); assertEquals("{\"entity\": {\n \"id\": 12336,\n \"averageRating\": null,\n \"ratingCount\": null,\n \"name\": \"IXXXXXXXXXXXXX\",\n \"imageURL\": \"\"\n}}",