1.1 --- a/json/src/main/java/org/apidesign/html/json/impl/JSON.java Mon Apr 22 21:12:16 2013 +0200
1.2 +++ b/json/src/main/java/org/apidesign/html/json/impl/JSON.java Mon Apr 22 21:19:58 2013 +0200
1.3 @@ -32,8 +32,23 @@
1.4 public static void extract(Object value, String[] props, Object[] values) {
1.5 }
1.6
1.7 - public static Object toJSON(Object prop_firstName) {
1.8 - return null;
1.9 + public static Object toJSON(Object value) {
1.10 + if (value == null) {
1.11 + return "null";
1.12 + }
1.13 + if (value instanceof Enum) {
1.14 + value = value.toString();
1.15 + }
1.16 + if (value instanceof String) {
1.17 + return '"' +
1.18 + ((String)value).
1.19 + replace("\"", "\\\"").
1.20 + replace("\n", "\\n").
1.21 + replace("\r", "\\r").
1.22 + replace("\t", "\\t")
1.23 + + '"';
1.24 + }
1.25 + return value.toString();
1.26 }
1.27
1.28 public static String toString(Object obj, String prop) {
2.1 --- a/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java Mon Apr 22 21:12:16 2013 +0200
2.2 +++ b/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java Mon Apr 22 21:19:58 2013 +0200
2.3 @@ -955,7 +955,8 @@
2.4 String sep = "";
2.5 for (Prprt p : props) {
2.6 w.write(sep);
2.7 - w.append(" sb.append(\"" + p.name() + ": \");\n");
2.8 + w.append(" sb.append('\"').append(\"" + p.name() + "\")");
2.9 + w.append(".append('\"').append(\":\");\n");
2.10 w.append(" sb.append(org.apidesign.html.json.impl.JSON.toJSON(prop_");
2.11 w.append(p.name()).append("));\n");
2.12 sep = " sb.append(',');\n";
3.1 --- a/json/src/test/java/org/apidesign/html/json/impl/JSONListTest.java Mon Apr 22 21:12:16 2013 +0200
3.2 +++ b/json/src/test/java/org/apidesign/html/json/impl/JSONListTest.java Mon Apr 22 21:19:58 2013 +0200
3.3 @@ -71,6 +71,7 @@
3.4
3.5 People people = new People(c);
3.6 people.getInfo().add(p);
3.7 + assertEquals(people.getInfo().toString(), "[{\"firstName\":\"1\",\"lastName\":\"2\",\"sex\":\"MALE\"}]", "Converted to real JSON");
3.8
3.9 PropertyBinding pb = bindings.get("info");
3.10 assertNotNull(pb, "Binding for info found");