Added reflection-support for stringifyJson.
This commit is contained in:
parent
2e31e3d7a9
commit
d9f539b2bd
1 changed files with 31 additions and 0 deletions
|
|
@ -1,5 +1,7 @@
|
||||||
package org.dynmap.web;
|
package org.dynmap.web;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.Modifier;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
@ -40,6 +42,35 @@ public class Json {
|
||||||
}
|
}
|
||||||
sb.append("]");
|
sb.append("]");
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
|
} else if (o instanceof Object) /* TODO: Always true, maybe interface? */ {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append("{");
|
||||||
|
boolean first = true;
|
||||||
|
|
||||||
|
Class<?> c = o.getClass();
|
||||||
|
for(Field field : c.getFields()) {
|
||||||
|
if (!Modifier.isPublic(field.getModifiers()))
|
||||||
|
continue;
|
||||||
|
String fieldName = field.getName();
|
||||||
|
Object fieldValue;
|
||||||
|
try {
|
||||||
|
fieldValue = field.get(o);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
continue;
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (first)
|
||||||
|
first = false;
|
||||||
|
else
|
||||||
|
sb.append(",");
|
||||||
|
sb.append(stringifyJson(fieldName));
|
||||||
|
sb.append(": ");
|
||||||
|
sb.append(stringifyJson(fieldValue));
|
||||||
|
}
|
||||||
|
sb.append("}");
|
||||||
|
return sb.toString();
|
||||||
} else {
|
} else {
|
||||||
return "undefined";
|
return "undefined";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue