From 12b75c4acc31ab8a3cfa84a5d9c3ca3f7104306c Mon Sep 17 00:00:00 2001 From: Douglas Crockford Date: Thu, 13 Jan 2011 18:33:56 -0800 Subject: [PATCH] XML.toString(array) --- Test.java | 1 + XML.java | 39 ++++++++++++++++----------------------- 2 files changed, 17 insertions(+), 23 deletions(-) diff --git a/Test.java b/Test.java index b4a46ab..02ad3c1 100755 --- a/Test.java +++ b/Test.java @@ -465,6 +465,7 @@ public class Test extends TestCase { int ar[] = {1, 2, 3}; JSONArray ja = new JSONArray(ar); assertEquals("[1,2,3]", ja.toString()); + assertEquals("123", XML.toString(ar)); String sa[] = {"aString", "aNumber", "aBoolean"}; jsonobject = new JSONObject(beanie, sa); diff --git a/XML.java b/XML.java index 22acfb2..cd033e1 100755 --- a/XML.java +++ b/XML.java @@ -24,7 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import java.lang.reflect.Array; import java.util.Iterator; @@ -460,17 +459,6 @@ public class XML { sb.append(toString(value, key)); } } - } else if (value.getClass().isArray()) { - length = Array.getLength(value); - for (i = 0; i < length; i += 1) { - sb.append('<'); - sb.append(key); - sb.append('>'); - sb.append(Array.get(value, i).toString()); - sb.append("'); - } } else if (value.equals("")) { sb.append('<'); sb.append(key); @@ -495,18 +483,23 @@ public class XML { // XML does not have good support for arrays. If an array appears in a place // where XML is lacking, synthesize an element. - } else if (object instanceof JSONArray) { - ja = (JSONArray)object; - length = ja.length(); - for (i = 0; i < length; i += 1) { - sb.append(toString(ja.opt(i), tagName == null ? "array" : tagName)); - } - return sb.toString(); } else { - string = (object == null) ? "null" : escape(object.toString()); - return (tagName == null) ? "\"" + string + "\"" : - (string.length() == 0) ? "<" + tagName + "/>" : - "<" + tagName + ">" + string + ""; + if (object.getClass().isArray()) { + object = new JSONArray(object); + } + if (object instanceof JSONArray) { + ja = (JSONArray)object; + length = ja.length(); + for (i = 0; i < length; i += 1) { + sb.append(toString(ja.opt(i), tagName == null ? "array" : tagName)); + } + return sb.toString(); + } else { + string = (object == null) ? "null" : escape(object.toString()); + return (tagName == null) ? "\"" + string + "\"" : + (string.length() == 0) ? "<" + tagName + "/>" : + "<" + tagName + ">" + string + ""; + } } } } \ No newline at end of file