Revision: 2298
http://sourceforge.net/p/swingme/code/2298
Author: yuranet
Date: 2013-11-27 05:42:35 +0000 (Wed, 27 Nov 2013)
Log Message:
-----------
slightly better xml and json
Modified Paths:
--------------
UtilME/src/net/yura/mobile/io/JSONUtil.java
UtilME/src/net/yura/mobile/io/XMLUtil.java
UtilME/src/net/yura/mobile/io/json/JSONWriter.java
Modified: UtilME/src/net/yura/mobile/io/JSONUtil.java
===================================================================
--- UtilME/src/net/yura/mobile/io/JSONUtil.java 2013-11-27 05:38:00 UTC (rev 2297)
+++ UtilME/src/net/yura/mobile/io/JSONUtil.java 2013-11-27 05:42:35 UTC (rev 2298)
@@ -10,6 +10,7 @@
import net.yura.mobile.io.json.JSONTokener;
import net.yura.mobile.io.json.JSONWriter;
import net.yura.mobile.logging.Logger;
+import net.yura.mobile.util.SystemUtil;
/**
* @author Yura Mamyrin
@@ -39,9 +40,6 @@
else if (object instanceof Boolean) {
serializer.value( ((Boolean)object).booleanValue() );
}
- else if (object instanceof Vector) {
- saveVector(serializer, (Vector)object);
- }
else if (object instanceof Hashtable) {
saveHashtable(serializer, (Hashtable)object);
}
@@ -74,6 +72,9 @@
else if (object instanceof Short) {
serializer.value( ((Short)object).longValue() );
}
+ else if (object instanceof Vector) {
+ saveVector(serializer, (Vector)object);
+ }
else {
throw new IOException("unknown object "+object);
}
@@ -108,7 +109,7 @@
Object objClass = map.get("class");
if (objClass instanceof String) {
map.remove("class");
- result = readObject(map, (String) objClass);
+ result = readObject((String) objClass, map);
}
else {
result = map;
@@ -121,6 +122,7 @@
result = array;
break;
case '(':
+ // TODO not currently supported as does not recognise close ')'
result = readVector(x);
break;
default:
@@ -145,7 +147,7 @@
return result;
}
- protected Object readObject(Hashtable map, String name) throws IOException {
+ protected Object readObject(String name, Hashtable map) {
if (XMLUtil.TAG_HASHTABLE.equals(name)) {
// we can only end up here if we failed to encode the map because of non-string keys.
@@ -159,6 +161,9 @@
}
return object;
}
+ else if (XMLUtil.TAG_VECTOR.equals(name)) {
+ return SystemUtil.asList((Object[])map.get("value"));
+ }
else {
Object value = map.get("value");
if (XMLUtil.TAG_INTEGER.equals(name)) {
@@ -285,7 +290,9 @@
for (boolean end=false;!end;end = x.endObject()) {
String key = x.nextKey();
Object obj = readObject(x);
- hashtable.put(key, obj);
+ if (obj != null) {
+ hashtable.put(key, obj);
+ }
}
return hashtable;
}
Modified: UtilME/src/net/yura/mobile/io/XMLUtil.java
===================================================================
--- UtilME/src/net/yura/mobile/io/XMLUtil.java 2013-11-27 05:38:00 UTC (rev 2297)
+++ UtilME/src/net/yura/mobile/io/XMLUtil.java 2013-11-27 05:42:35 UTC (rev 2298)
@@ -109,35 +109,21 @@
}
protected void saveObject(XmlSerializer serializer,Object object) throws IOException {
-
+ String tagName = getObjectType(object);
+ serializer.startTag(null,tagName);
if (object instanceof Hashtable) {
-
- serializer.startTag(null,TAG_HASHTABLE);
saveHashtable(serializer, (Hashtable)object);
- serializer.endTag(null,TAG_HASHTABLE);
}
else if (object instanceof Vector) {
-
- serializer.startTag(null,TAG_VECTOR);
saveVector(serializer, (Vector)object);
- serializer.endTag(null,TAG_VECTOR);
}
else if (object instanceof Object[]) {
-
- serializer.startTag(null,TAG_ARRAY);
saveArray(serializer, (Object[])object);
- serializer.endTag(null,TAG_ARRAY);
}
else {
-
- String tagName = getObjectType(object);
-
- serializer.startTag(null,tagName);
serializer.attribute(null,"value", String.valueOf(object) );
- serializer.endTag(null,tagName);
-
}
-
+ serializer.endTag(null,tagName);
}
protected static String getObjectType(Object object) throws IOException {
@@ -174,6 +160,15 @@
else if (object instanceof Long) {
tagName = TAG_LONG;
}
+ else if (object instanceof Hashtable) {
+ tagName = TAG_HASHTABLE;
+ }
+ else if (object instanceof Vector) {
+ tagName = TAG_VECTOR;
+ }
+ else if (object instanceof Object[]) {
+ tagName = TAG_ARRAY;
+ }
else {
// TODO somehow encode it or do something else??
throw new IOException( "unknown class: "+object.getClass()+" for object: "+object );
Modified: UtilME/src/net/yura/mobile/io/json/JSONWriter.java
===================================================================
--- UtilME/src/net/yura/mobile/io/json/JSONWriter.java 2013-11-27 05:38:00 UTC (rev 2297)
+++ UtilME/src/net/yura/mobile/io/json/JSONWriter.java 2013-11-27 05:42:35 UTC (rev 2298)
@@ -286,15 +286,14 @@
*/
public JSONWriter value(double d) throws IOException {
testValidity(d);
- return this.append(trimNumber( String.valueOf(d) ));
+ return this.append(Double.toString(d));
}
static void testValidity(double d) throws IOException {
- Double o = new Double(d);
//if (o != null) {
// if (o instanceof Double) {
- if (o.isInfinite() || o.isNaN()) {
+ if (Double.isInfinite(d) || Double.isNaN(d)) {
throw new IOException(
"JSON does not allow non-finite numbers");
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|