package water.util;
import java.util.*;
import java.util.Map.Entry;
import com.google.common.base.Objects;
import com.google.common.collect.Maps;
import dontweave.gson.*;
public class JsonUtil {
private static final Map<JsonPrimitive, JsonPrimitive> SPECIAL = Maps.newHashMap();
static {
SPECIAL.put(new JsonPrimitive(Double.NaN), new JsonPrimitive("NaN"));
SPECIAL.put(new JsonPrimitive(Double.POSITIVE_INFINITY), new JsonPrimitive("Infinity"));
SPECIAL.put(new JsonPrimitive(Double.NEGATIVE_INFINITY), new JsonPrimitive("-Infinity"));
}
public static JsonObject escape(JsonObject json) {
JsonObject res = new JsonObject();
for( Entry<String, JsonElement> e : json.entrySet() )
res.add(e.getKey(), escape(e.getValue()));
return res;
}
public static JsonArray escape(JsonArray json) {
JsonArray res = new JsonArray();
for( JsonElement v : json ) res.add(escape(v));
return res;
}
public static JsonElement escape(JsonElement v) {
if( v.isJsonObject() ) return escape(v.getAsJsonObject());
if( v.isJsonArray() ) return escape(v.getAsJsonArray());
return Objects.firstNonNull(SPECIAL.get(v), v);
}
}