diff src/luan/lib/json/JsonToString.java @ 1132:b70102bab110

add json_compressed_string()
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 02 Jan 2018 21:30:41 -0700
parents 9a1aa6fc0b4e
children 9dca1e912658
line wrap: on
line diff
--- a/src/luan/lib/json/JsonToString.java	Thu Dec 14 01:38:47 2017 -0700
+++ b/src/luan/lib/json/JsonToString.java	Tue Jan 02 21:30:41 2018 -0700
@@ -5,7 +5,7 @@
 import java.util.Iterator;
 
 
-public final class JsonToString {
+public class JsonToString {
 
 	public static final class JsonException extends RuntimeException {
 		private JsonException(String msg) {
@@ -15,12 +15,21 @@
 
 	public static String toString(Object obj) throws JsonException {
 		StringBuilder sb = new StringBuilder();
-		toString(obj,sb,0);
+		new JsonToString().toString(obj,sb,0);
 		sb.append('\n');
 		return sb.toString();
 	}
 
-	private static void toString(Object obj,StringBuilder sb,int indented) throws JsonException {
+	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);
+		return sb.toString();
+	}
+
+	private void toString(Object obj,StringBuilder sb,int indented) throws JsonException {
 		if( obj == null || obj instanceof Boolean || obj instanceof Number ) {
 			sb.append(obj);
 			return;
@@ -40,7 +49,7 @@
 		throw new JsonException("can't handle type "+obj.getClass().getName());
 	}
 
-	private static void toString(final String s,StringBuilder sb) {
+	private void toString(final String s,StringBuilder sb) {
 		sb.append('"');
 		for( int i=0; i<s.length(); i++ ) {
 			char c = s.charAt(i);
@@ -73,7 +82,7 @@
 		sb.append('"');
 	}
 
-	private static void toString(List list,StringBuilder sb,int indented) {
+	private void toString(List list,StringBuilder sb,int indented) {
 		sb.append('[');
 		if( !list.isEmpty() ) {
 			indent(sb,indented+1);
@@ -88,7 +97,7 @@
 		return;
 	}
 
-	private static void toString(Map map,StringBuilder sb,int indented) throws JsonException {
+	private void toString(Map map,StringBuilder sb,int indented) throws JsonException {
 		sb.append('{');
 		if( !map.isEmpty() ) {
 			Iterator<Map.Entry> i = map.entrySet().iterator();
@@ -104,7 +113,7 @@
 		sb.append('}');
 	}
 
-	private static void toString(Map.Entry entry,StringBuilder sb,int indented) throws JsonException {
+	private void toString(Map.Entry entry,StringBuilder sb,int indented) throws JsonException {
 		Object key = entry.getKey();
 		if( !(key instanceof String) )
 			throw new JsonException("table keys must be strings");
@@ -113,12 +122,12 @@
 		toString(entry.getValue(),sb,indented);
 	}
 
-	private static void indent(StringBuilder sb,int indented) {
+	void indent(StringBuilder sb,int indented) {
 		sb.append('\n');
 		for( int i=0; i<indented; i++ ) {
 			sb.append('\t');
 		}
 	}
 
-	private JsonToString() {}  // never
+	private JsonToString() {}
 }