diff --git a/src/dev/peerat/framework/utils/json/Json.java b/src/dev/peerat/framework/utils/json/Json.java index c02394d..dd7df0b 100644 --- a/src/dev/peerat/framework/utils/json/Json.java +++ b/src/dev/peerat/framework/utils/json/Json.java @@ -1,3 +1,50 @@ package dev.peerat.framework.utils.json; -public interface Json{} +public class Json{ + + public void buildValue(StringBuilder builder, Object value){ + if(value == null) builder.append("null"); + else if(value instanceof String){ + builder.append('"'); + for(char c : ((String)value).toCharArray()){ + if(c == '"'){ + builder.append("\\\""); + continue; + } + if(c == '\\'){ + builder.append("\\\\"); + continue; + } + if(c == '\n'){ + builder.append("\\n"); + continue; + } + if(c == '\b'){ + builder.append("\\b"); + continue; + } + if(c == '\f'){ + builder.append("\\f"); + continue; + } + if(c == '\r'){ + builder.append("\\r"); + continue; + } + if(c == '\t'){ + builder.append("\\t"); + continue; + } + builder.append(c); + } + builder.append('"'); + }else if(value instanceof Character){ + builder.append('\''); + builder.append(value); + builder.append('\''); + }else{ + builder.append(value); + } + } + +} diff --git a/src/dev/peerat/framework/utils/json/JsonArray.java b/src/dev/peerat/framework/utils/json/JsonArray.java index 69b10dc..4031546 100644 --- a/src/dev/peerat/framework/utils/json/JsonArray.java +++ b/src/dev/peerat/framework/utils/json/JsonArray.java @@ -1,9 +1,10 @@ package dev.peerat.framework.utils.json; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; -public class JsonArray implements Json{ +public class JsonArray extends Json{ private List list; @@ -17,7 +18,16 @@ public class JsonArray implements Json{ @Override public String toString(){ - return list.toString(); + Iterator iterator = list.iterator(); + if(!iterator.hasNext()) return "[]"; + StringBuilder builder= new StringBuilder(); + builder.append('['); + while(iterator.hasNext()){ + buildValue(builder, iterator.next()); + if(iterator.hasNext()) builder.append(','); + } + builder.append(']'); + return builder.toString(); } diff --git a/src/dev/peerat/framework/utils/json/JsonMap.java b/src/dev/peerat/framework/utils/json/JsonMap.java index 96e568e..6a35d53 100644 --- a/src/dev/peerat/framework/utils/json/JsonMap.java +++ b/src/dev/peerat/framework/utils/json/JsonMap.java @@ -5,7 +5,7 @@ import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; -public class JsonMap implements Json{ +public class JsonMap extends Json{ private Map map; @@ -38,17 +38,8 @@ public class JsonMap implements Json{ builder.append("\":"); Object value = entry.getValue(); - if(value instanceof String){ - builder.append('"'); - builder.append(value); - builder.append('"'); - }else if(value instanceof Character){ - builder.append('\''); - builder.append(value); - builder.append('\''); - }else{ - builder.append(value); - } + buildValue(builder, value); + if(iterator.hasNext()) builder.append(','); } builder.append('}'); diff --git a/src/dev/peerat/framework/utils/json/JsonParser.java b/src/dev/peerat/framework/utils/json/JsonParser.java index cf8b207..d51783c 100644 --- a/src/dev/peerat/framework/utils/json/JsonParser.java +++ b/src/dev/peerat/framework/utils/json/JsonParser.java @@ -133,7 +133,7 @@ public class JsonParser extends Parser{ return container.getValue(); } - private static class JsonContainer implements Json{ + private static class JsonContainer extends Json{ private Json value;