Initial project import
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
package com.seconectai.condocontab.util;
|
||||
|
||||
import java.time.temporal.TemporalAccessor;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
public final class Json {
|
||||
private Json() {
|
||||
}
|
||||
|
||||
public static String write(Object value) {
|
||||
return value(value);
|
||||
}
|
||||
|
||||
private static String value(Object value) {
|
||||
if (value == null) {
|
||||
return "null";
|
||||
}
|
||||
if (value instanceof Number || value instanceof Boolean) {
|
||||
return String.valueOf(value);
|
||||
}
|
||||
if (value instanceof TemporalAccessor) {
|
||||
return quote(String.valueOf(value));
|
||||
}
|
||||
if (value instanceof Map<?, ?> map) {
|
||||
StringBuilder json = new StringBuilder("{");
|
||||
Iterator<? extends Map.Entry<?, ?>> iterator = map.entrySet().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<?, ?> entry = iterator.next();
|
||||
json.append(quote(String.valueOf(entry.getKey()))).append(":").append(value(entry.getValue()));
|
||||
if (iterator.hasNext()) {
|
||||
json.append(",");
|
||||
}
|
||||
}
|
||||
return json.append("}").toString();
|
||||
}
|
||||
if (value instanceof Iterable<?> iterable) {
|
||||
StringBuilder json = new StringBuilder("[");
|
||||
Iterator<?> iterator = iterable.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
json.append(value(iterator.next()));
|
||||
if (iterator.hasNext()) {
|
||||
json.append(",");
|
||||
}
|
||||
}
|
||||
return json.append("]").toString();
|
||||
}
|
||||
return quote(String.valueOf(value));
|
||||
}
|
||||
|
||||
private static String quote(String text) {
|
||||
StringBuilder out = new StringBuilder("\"");
|
||||
for (char c : text.toCharArray()) {
|
||||
switch (c) {
|
||||
case '"' -> out.append("\\\"");
|
||||
case '\\' -> out.append("\\\\");
|
||||
case '\n' -> out.append("\\n");
|
||||
case '\r' -> out.append("\\r");
|
||||
case '\t' -> out.append("\\t");
|
||||
default -> out.append(c);
|
||||
}
|
||||
}
|
||||
return out.append("\"").toString();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user