package ilarkesto.json; import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; public class JsonBuilder { private SortedMap<String, Object> elements = new TreeMap<String, Object>(); public void string(String name, String string) { elements.put(name, '"' + string + '"'); } public JsonBuilder object(String name) { JsonBuilder object = new JsonBuilder(); elements.put(name, object); return object; } @Override public String toString() { return toString(0); } private String toString(int indent) { StringBuilder sb = new StringBuilder(); sb.append("{\n"); indent++; for (Map.Entry<String, Object> entry : elements.entrySet()) { indent(sb, indent); sb.append("\"").append(entry.getKey()).append("\" : "); Object o = entry.getValue(); if (o instanceof JsonBuilder) { sb.append(((JsonBuilder) o).toString(indent)); } else { sb.append(o); } sb.append(",\n"); } indent--; indent(sb, indent); sb.append("}"); return sb.toString(); } private void indent(StringBuilder sb, int indent) { for (int i = 0; i < indent; i++) sb.append(" "); } }