diff src/goodjava/json/JsonToString.java @ 1419:59fd2e8b1b9d

stringify and json_string
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 25 Oct 2019 22:12:06 -0600
parents 27efb1fcbcb5
children 509736ad42e6
line wrap: on
line diff
--- a/src/goodjava/json/JsonToString.java	Fri Oct 18 22:29:46 2019 -0600
+++ b/src/goodjava/json/JsonToString.java	Fri Oct 25 22:12:06 2019 -0600
@@ -5,7 +5,11 @@
 import java.util.Iterator;
 
 
-public class JsonToString {
+public final class JsonToString {
+	public boolean compressed = false;
+
+	private String colon;
+	private String comma;
 
 	public static final class JsonException extends RuntimeException {
 		private JsonException(String msg) {
@@ -13,19 +17,13 @@
 		}
 	}
 
-	public static String toString(Object obj) throws JsonException {
+	public String toString(Object obj) throws JsonException {
+		colon = compressed ? ":" : ": ";
+		comma = compressed ? "," : ", ";
 		StringBuilder sb = new StringBuilder();
-		new JsonToString().toString(obj,sb,0);
-		sb.append('\n');
-		return sb.toString();
-	}
-
-	public static String toCompressedString(Object obj) throws JsonException {
-		StringBuilder sb = new StringBuilder();
-		JsonToString jts = new JsonToString() {
-			void indent(StringBuilder sb,int indented) {}
-		};
-		jts.toString(obj,sb,0);
+		toString(obj,sb,0);
+		if( !compressed )
+			sb.append('\n');
 		return sb.toString();
 	}
 
@@ -124,7 +122,7 @@
 			indent(sb,indented+1);
 			toString(list.get(0),sb,indented+1);
 			for( int i=1; i<list.size(); i++ ) {
-				sb.append(", ");
+				sb.append(comma);
 				toString(list.get(i),sb,indented+1);
 			}
 			indent(sb,indented);
@@ -154,16 +152,17 @@
 		if( !(key instanceof String) )
 			throw new JsonException("table keys must be strings");
 		toString((String)key,sb);
-		sb.append(": ");
+		sb.append(colon);
 		toString(entry.getValue(),sb,indented);
 	}
 
-	void indent(StringBuilder sb,int indented) {
+	private void indent(StringBuilder sb,int indented) {
+		if( compressed )
+			return;
 		sb.append('\n');
 		for( int i=0; i<indented; i++ ) {
 			sb.append('\t');
 		}
 	}
 
-	private JsonToString() {}
 }