public class Json
extends java.lang.Object
Hauptklasse für die Serialisierung und Deserialisierung von JSON-Objekten.
Für jedes JSON-Objekt, welches deserialisiert werden soll, muss ein Interface angelegt werden, das Getter für die benötigten JSON-Keys enthält. Dieses Interface wird readObject(Class, JsonReader)
als erstem Parameter übergeben.
Alternativ kann statt einem Interface ein beliebiger anderer einfacher Datentyp (s.u.) übergeben zu werden um beispielsweise eine Zahl, ein Wahrheitswert oder ein String zu deserialisieren. Mit der Übergabe von Object.getClass()
kann ein allgemeines JSON-Objekt deserialisiert werden, bei dem die einzelnen Schlüsselpaare wie bei einer Map abgefragt werden können.
Wird ein Interface verwendet, kann jeder Getter des Interfaces mit JsonKey
annotiert werden um den Namen des Keys der Methode zuzuordnen. Fehlt die Annotation wird der Key automatisch gebildet, indem ein “get” oder “is” am Anfang weggelassen wird und der erste Buchstabe in einen Kleinbuchstaben konvertiert wird. “String getFirstName()” wird beispielsweise zu “firstName”.
Optional kann jedem Getter mit JsonDefault
ein Default-Wert als JSON-String übergeben werden, der verwendet wird, wenn der entsprechende Key fehlt. Ist für eine Methode kein Default-Wert vorgegeben und fehlt der entsprechende Key, dann wird beim Deserialisieren ein Fehler ausgelöst.
Unterstützte Datentypen: Boolean, JsonObject, Interfaces (s.o.), Iterable, Map, Byte, Short, Integer, Long, Float, Double, BigInteger, BigDecimal sowie alle primitiven Datentypen außer char.
Modifier and Type | Class and Description |
---|---|
static class |
Json.Builder |
private class |
Json.JsonProxy |
Modifier and Type | Field and Description |
---|---|
private java.lang.String |
_arrayEmpty |
private java.lang.String |
_arrayEnd |
private java.lang.String |
_arrayStart |
private java.lang.String |
_indent |
private java.lang.String |
_keyValueSeparator |
private java.lang.String |
_listEnd |
private java.lang.String |
_listSeparator |
private java.lang.String |
_objectEmpty |
private java.lang.String |
_objectEnd |
private java.lang.String |
_objectStart |
private boolean |
_strictMath |
private static Json |
DEFAULT_JSON |
(package private) static java.lang.reflect.Method |
OBJECT_EQUALS |
(package private) static java.lang.reflect.Method |
OBJECT_HASHCODE |
(package private) static java.lang.reflect.Method |
OBJECT_TOSTRING |
Modifier | Constructor and Description |
---|---|
private |
Json(boolean strictMath,
boolean compact,
java.lang.String indent) |
Modifier and Type | Method and Description |
---|---|
<T> T |
asJson(java.lang.Class<T> cls,
java.lang.Object value) |
protected java.lang.String |
asString(java.lang.String s) |
static Json |
getInstance() |
private static java.lang.reflect.Method |
getObjectMethod(java.lang.String name,
java.lang.Class<?>... types) |
boolean |
getStrictMath()
Gibt true zurück, wenn verlustbehaftete Umwandlung von Zahlwerten erlaubt ist.
|
JsonObject |
newObject() |
JsonObject |
newObject(java.util.Map<java.lang.String,?> data) |
(package private) static char |
peek(JsonReader data) |
(package private) <T> T |
proxy(@NotNull java.lang.Class<T> returnType,
@Nullable java.lang.Object jsonValue) |
private JsonObject |
proxyRawObject(java.lang.Object object) |
(package private) static char |
read(JsonReader data,
char... expected) |
<T> @Nullable java.util.List<T> |
readArray(java.lang.Class<T> cls,
java.lang.CharSequence charSequence) |
<T> java.util.List<T> |
readArray(java.lang.Class<T> cls,
JsonReader jsonReader) |
<T> @Nullable java.util.List<T> |
readArray(java.lang.Class<T> cls,
java.io.Reader reader) |
private java.util.List<java.lang.Object> |
readArray(JsonReader data,
@Nullable java.lang.Class<?> resultHint) |
private static @Nullable java.lang.Object |
readConstant(JsonReader data,
java.lang.String text,
@Nullable java.lang.Object result) |
private static java.lang.Object |
readNumber(JsonReader data) |
private static java.lang.String |
readNumChars(JsonReader data,
int num) |
@Nullable java.lang.Object |
readObject(java.lang.CharSequence charSequence) |
<T> T |
readObject(java.lang.Class<T> cls,
java.lang.CharSequence charSequence) |
<T> T |
readObject(java.lang.Class<T> cls,
JsonReader jsonReader) |
<T> T |
readObject(java.lang.Class<T> cls,
java.io.Reader reader) |
@Nullable java.lang.Object |
readObject(JsonReader jsonReader) |
@Nullable java.lang.Object |
readObject(java.io.Reader reader) |
(package private) static java.lang.String |
readString(JsonReader data) |
private static java.lang.String |
readUntil(JsonReader data,
char... expected) |
private static void |
readUntil(JsonReader data,
java.lang.StringBuilder result,
char... expected) |
(package private) @Nullable java.lang.Object |
readValue(JsonReader data,
@Nullable java.lang.reflect.Type resultHint) |
private void |
writeArray(java.io.StringWriter writer,
java.lang.Iterable<?> object,
int indentDepth) |
private void |
writeIndent(java.io.StringWriter writer,
int depth) |
private void |
writeJsonObjectOrMap(java.io.StringWriter writer,
java.util.Map<?,?> object,
int indentDepth) |
private void |
writeJsonProxy(java.io.StringWriter writer,
Json.JsonProxy object,
int indentDepth) |
private static void |
writeNumber(java.io.StringWriter writer,
java.lang.Number object) |
java.lang.String |
writeObject(java.lang.Object object) |
private void |
writeRawObject(java.io.StringWriter writer,
java.lang.Object object,
int indentDepth) |
private static void |
writeString(java.io.StringWriter writer,
java.lang.String s) |
private void |
writeValue(java.io.StringWriter writer,
@Nullable java.lang.Object object,
int indentDepth) |
private static final Json DEFAULT_JSON
private final boolean _strictMath
private final java.lang.String _indent
private final java.lang.String _objectStart
private final java.lang.String _objectEnd
private final java.lang.String _objectEmpty
private final java.lang.String _arrayStart
private final java.lang.String _arrayEnd
private final java.lang.String _arrayEmpty
private final java.lang.String _keyValueSeparator
private final java.lang.String _listSeparator
private final java.lang.String _listEnd
static final java.lang.reflect.Method OBJECT_EQUALS
static final java.lang.reflect.Method OBJECT_HASHCODE
static final java.lang.reflect.Method OBJECT_TOSTRING
public static Json getInstance()
public JsonObject newObject()
public JsonObject newObject(java.util.Map<java.lang.String,?> data)
@Nullable public <T> T asJson(java.lang.Class<T> cls, java.lang.Object value) throws JsonException
JsonException
@Nullable public @Nullable java.lang.Object readObject(java.lang.CharSequence charSequence) throws JsonException
JsonException
@Nullable public @Nullable java.lang.Object readObject(java.io.Reader reader) throws JsonException
JsonException
@Nullable public @Nullable java.lang.Object readObject(JsonReader jsonReader) throws JsonException
JsonException
@Nullable public <T> T readObject(java.lang.Class<T> cls, java.lang.CharSequence charSequence) throws JsonException
JsonException
@Nullable public <T> T readObject(java.lang.Class<T> cls, java.io.Reader reader) throws JsonException
JsonException
@Nullable public <T> T readObject(java.lang.Class<T> cls, JsonReader jsonReader) throws JsonException
JsonException
@Nullable public <T> @Nullable java.util.List<T> readArray(java.lang.Class<T> cls, java.lang.CharSequence charSequence) throws JsonException
JsonException
@Nullable public <T> @Nullable java.util.List<T> readArray(java.lang.Class<T> cls, java.io.Reader reader) throws JsonException
JsonException
public <T> java.util.List<T> readArray(java.lang.Class<T> cls, JsonReader jsonReader) throws JsonException
JsonException
public java.lang.String writeObject(java.lang.Object object)
private void writeValue(java.io.StringWriter writer, @Nullable @Nullable java.lang.Object object, int indentDepth)
private static void writeNumber(java.io.StringWriter writer, java.lang.Number object)
private void writeRawObject(java.io.StringWriter writer, java.lang.Object object, int indentDepth)
private JsonObject proxyRawObject(java.lang.Object object)
private void writeArray(java.io.StringWriter writer, java.lang.Iterable<?> object, int indentDepth)
private void writeJsonProxy(java.io.StringWriter writer, Json.JsonProxy object, int indentDepth)
private void writeJsonObjectOrMap(java.io.StringWriter writer, java.util.Map<?,?> object, int indentDepth)
private void writeIndent(java.io.StringWriter writer, int depth)
@Nullable <T> T proxy(@NotNull @NotNull java.lang.Class<T> returnType, @Nullable @Nullable java.lang.Object jsonValue) throws JsonException
JsonException
@Nullable @Nullable java.lang.Object readValue(JsonReader data, @Nullable @Nullable java.lang.reflect.Type resultHint) throws JsonException
JsonException
private static java.lang.Object readNumber(JsonReader data) throws JsonParseException
JsonParseException
private java.util.List<java.lang.Object> readArray(JsonReader data, @Nullable @Nullable java.lang.Class<?> resultHint) throws JsonException
JsonException
@Nullable private static @Nullable java.lang.Object readConstant(JsonReader data, java.lang.String text, @Nullable @Nullable java.lang.Object result) throws JsonParseException
JsonParseException
static java.lang.String readString(JsonReader data) throws JsonParseException
JsonParseException
private static void writeString(java.io.StringWriter writer, java.lang.String s)
protected java.lang.String asString(java.lang.String s)
private static java.lang.String readNumChars(JsonReader data, int num)
static char read(JsonReader data, char... expected) throws JsonParseException
JsonParseException
static char peek(JsonReader data)
private static java.lang.String readUntil(JsonReader data, char... expected) throws JsonParseException
JsonParseException
private static void readUntil(JsonReader data, java.lang.StringBuilder result, char... expected) throws JsonParseException
JsonParseException
public boolean getStrictMath()
Gibt true zurück, wenn verlustbehaftete Umwandlung von Zahlwerten erlaubt ist. Der Standardwert ist true.
private static java.lang.reflect.Method getObjectMethod(java.lang.String name, java.lang.Class<?>... types)