Package com.badlogic.gdx.utils
Class Json
- java.lang.Object
-
- com.badlogic.gdx.utils.Json
-
public class Json extends java.lang.Object
Reads/writes Java objects to/from JSON, automatically. See the wiki for usage: https://libgdx.com/wiki/utils/reading-and-writing-json
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Json.ReadOnlySerializer<T>
static interface
Json.Serializable
static interface
Json.Serializer<T>
-
Constructor Summary
Constructors Constructor Description Json()
Json(JsonWriter.OutputType outputType)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addClassTag(java.lang.String tag, java.lang.Class type)
Sets a tag to use instead of the fully qualifier class name.void
copyFields(java.lang.Object from, java.lang.Object to)
Each field on theto
object is set to the value for the field with the same name on thefrom
object.<T> T
fromJson(java.lang.Class<T> type, char[] data, int offset, int length)
<T> T
fromJson(java.lang.Class<T> type, FileHandle file)
<T> T
fromJson(java.lang.Class<T> type, java.io.InputStream input)
<T> T
fromJson(java.lang.Class<T> type, java.io.Reader reader)
<T> T
fromJson(java.lang.Class<T> type, java.lang.Class elementType, char[] data, int offset, int length)
<T> T
fromJson(java.lang.Class<T> type, java.lang.Class elementType, FileHandle file)
<T> T
fromJson(java.lang.Class<T> type, java.lang.Class elementType, java.io.InputStream input)
<T> T
fromJson(java.lang.Class<T> type, java.lang.Class elementType, java.io.Reader reader)
<T> T
fromJson(java.lang.Class<T> type, java.lang.Class elementType, java.lang.String json)
<T> T
fromJson(java.lang.Class<T> type, java.lang.String json)
java.lang.Class
getClass(java.lang.String tag)
Returns the class for the specified tag, or null.boolean
getIgnoreUnknownFields()
<T> Json.Serializer<T>
getSerializer(java.lang.Class<T> type)
java.lang.String
getTag(java.lang.Class type)
Returns the tag for the specified class, or null.JsonWriter
getWriter()
protected boolean
ignoreUnknownField(java.lang.Class type, java.lang.String fieldName)
Called for each unknown field name encountered byreadFields(Object, JsonValue)
whenignoreUnknownFields
is false to determine whether the unknown field name should be ignored.protected java.lang.Object
newInstance(java.lang.Class type)
java.lang.String
prettyPrint(java.lang.Object object)
java.lang.String
prettyPrint(java.lang.Object object, int singleLineColumns)
java.lang.String
prettyPrint(java.lang.Object object, JsonValue.PrettyPrintSettings settings)
java.lang.String
prettyPrint(java.lang.String json)
java.lang.String
prettyPrint(java.lang.String json, int singleLineColumns)
java.lang.String
prettyPrint(java.lang.String json, JsonValue.PrettyPrintSettings settings)
void
readField(java.lang.Object object, Field field, java.lang.String jsonName, java.lang.Class elementType, JsonValue jsonMap)
void
readField(java.lang.Object object, java.lang.String name, JsonValue jsonData)
void
readField(java.lang.Object object, java.lang.String name, java.lang.Class elementType, JsonValue jsonData)
void
readField(java.lang.Object object, java.lang.String fieldName, java.lang.String jsonName, JsonValue jsonData)
void
readField(java.lang.Object object, java.lang.String fieldName, java.lang.String jsonName, java.lang.Class elementType, JsonValue jsonMap)
void
readFields(java.lang.Object object, JsonValue jsonMap)
<T> T
readValue(java.lang.Class<T> type, JsonValue jsonData)
<T> T
readValue(java.lang.Class<T> type, java.lang.Class elementType, JsonValue jsonData)
<T> T
readValue(java.lang.Class<T> type, java.lang.Class elementType, T defaultValue, JsonValue jsonData)
<T> T
readValue(java.lang.String name, java.lang.Class<T> type, JsonValue jsonMap)
<T> T
readValue(java.lang.String name, java.lang.Class<T> type, java.lang.Class elementType, JsonValue jsonMap)
<T> T
readValue(java.lang.String name, java.lang.Class<T> type, java.lang.Class elementType, T defaultValue, JsonValue jsonMap)
<T> T
readValue(java.lang.String name, java.lang.Class<T> type, T defaultValue, JsonValue jsonMap)
void
setDefaultSerializer(Json.Serializer defaultSerializer)
Sets the serializer to use when the type being deserialized is not known (null).void
setDeprecated(java.lang.Class type, java.lang.String fieldName, boolean deprecated)
The specified field will be treated as if it has or does not have theDeprecated
annotation.void
setElementType(java.lang.Class type, java.lang.String fieldName, java.lang.Class elementType)
Sets the type of elements in a collection.void
setEnumNames(boolean enumNames)
When true,Enum.name()
is used to write enum values.void
setIgnoreDeprecated(boolean ignoreDeprecated)
When true, fields with theDeprecated
annotation will not be read or written.void
setIgnoreUnknownFields(boolean ignoreUnknownFields)
When true, fields in the JSON that are not found on the class will not throw aSerializationException
.void
setOutputType(JsonWriter.OutputType outputType)
Default isJsonWriter.OutputType.minimal
.void
setQuoteLongValues(boolean quoteLongValues)
Default is false.void
setReadDeprecated(boolean readDeprecated)
When true, fields with theDeprecated
annotation will be read (but not written) whensetIgnoreDeprecated(boolean)
is true.<T> void
setSerializer(java.lang.Class<T> type, Json.Serializer<T> serializer)
Registers a serializer to use for the specified type instead of the default behavior of serializing all of an objects fields.void
setSortFields(boolean sortFields)
When true, fields are sorted alphabetically when written, otherwise the source code order is used.void
setTypeName(java.lang.String typeName)
Sets the name of the JSON field to store the Java class name or class tag when required to avoid ambiguity during deserialization.void
setUsePrototypes(boolean usePrototypes)
When true, field values that are identical to a newly constructed instance are not written.void
setWriter(java.io.Writer writer)
Sets the writer where JSON output will be written.protected void
sortFields(java.lang.Class type, Array<java.lang.String> fieldNames)
Called to sort the fields for a class.java.lang.String
toJson(java.lang.Object object)
void
toJson(java.lang.Object object, FileHandle file)
void
toJson(java.lang.Object object, java.io.Writer writer)
java.lang.String
toJson(java.lang.Object object, java.lang.Class knownType)
void
toJson(java.lang.Object object, java.lang.Class knownType, FileHandle file)
void
toJson(java.lang.Object object, java.lang.Class knownType, java.io.Writer writer)
java.lang.String
toJson(java.lang.Object object, java.lang.Class knownType, java.lang.Class elementType)
void
toJson(java.lang.Object object, java.lang.Class knownType, java.lang.Class elementType, FileHandle file)
void
toJson(java.lang.Object object, java.lang.Class knownType, java.lang.Class elementType, java.io.Writer writer)
void
writeArrayEnd()
void
writeArrayStart()
void
writeArrayStart(java.lang.String name)
void
writeField(java.lang.Object object, java.lang.String name)
void
writeField(java.lang.Object object, java.lang.String name, java.lang.Class elementType)
void
writeField(java.lang.Object object, java.lang.String fieldName, java.lang.String jsonName)
void
writeField(java.lang.Object object, java.lang.String fieldName, java.lang.String jsonName, java.lang.Class elementType)
Writes the specified field to the current JSON object.void
writeFields(java.lang.Object object)
Writes all fields of the specified object to the current JSON object.void
writeObjectEnd()
void
writeObjectStart()
void
writeObjectStart(java.lang.Class actualType, java.lang.Class knownType)
Starts writing an object, writing the actualType to a field if needed.void
writeObjectStart(java.lang.String name)
void
writeObjectStart(java.lang.String name, java.lang.Class actualType, java.lang.Class knownType)
void
writeType(java.lang.Class type)
void
writeValue(java.lang.Object value)
Writes the value, without writing the class of the object.void
writeValue(java.lang.Object value, java.lang.Class knownType)
Writes the value, writing the class of the object if it differs from the specified known type.void
writeValue(java.lang.Object value, java.lang.Class knownType, java.lang.Class elementType)
Writes the value, writing the class of the object if it differs from the specified known type.void
writeValue(java.lang.String name, java.lang.Object value)
Writes the value as a field on the current JSON object, without writing the actual class.void
writeValue(java.lang.String name, java.lang.Object value, java.lang.Class knownType)
Writes the value as a field on the current JSON object, writing the class of the object if it differs from the specified known type.void
writeValue(java.lang.String name, java.lang.Object value, java.lang.Class knownType, java.lang.Class elementType)
Writes the value as a field on the current JSON object, writing the class of the object if it differs from the specified known type.
-
-
-
Constructor Detail
-
Json
public Json()
-
Json
public Json(JsonWriter.OutputType outputType)
-
-
Method Detail
-
setIgnoreUnknownFields
public void setIgnoreUnknownFields(boolean ignoreUnknownFields)
When true, fields in the JSON that are not found on the class will not throw aSerializationException
. Default is false.
-
getIgnoreUnknownFields
public boolean getIgnoreUnknownFields()
-
setIgnoreDeprecated
public void setIgnoreDeprecated(boolean ignoreDeprecated)
When true, fields with theDeprecated
annotation will not be read or written. Default is false.
-
setReadDeprecated
public void setReadDeprecated(boolean readDeprecated)
When true, fields with theDeprecated
annotation will be read (but not written) whensetIgnoreDeprecated(boolean)
is true. Default is false.- See Also:
setDeprecated(Class, String, boolean)
-
setOutputType
public void setOutputType(JsonWriter.OutputType outputType)
Default isJsonWriter.OutputType.minimal
.- See Also:
JsonWriter.setOutputType(OutputType)
-
setQuoteLongValues
public void setQuoteLongValues(boolean quoteLongValues)
Default is false.- See Also:
JsonWriter.setQuoteLongValues(boolean)
-
setEnumNames
public void setEnumNames(boolean enumNames)
When true,Enum.name()
is used to write enum values. When false,Enum.toString()
is used which may not be unique. Default is true.
-
addClassTag
public void addClassTag(java.lang.String tag, java.lang.Class type)
Sets a tag to use instead of the fully qualifier class name. This can make the JSON easier to read.
-
getClass
@Null public java.lang.Class getClass(java.lang.String tag)
Returns the class for the specified tag, or null.
-
getTag
@Null public java.lang.String getTag(java.lang.Class type)
Returns the tag for the specified class, or null.
-
setTypeName
public void setTypeName(@Null java.lang.String typeName)
Sets the name of the JSON field to store the Java class name or class tag when required to avoid ambiguity during deserialization. Set to null to never output this information, but be warned that deserialization may fail. Default is "class".
-
setDefaultSerializer
public void setDefaultSerializer(@Null Json.Serializer defaultSerializer)
Sets the serializer to use when the type being deserialized is not known (null).
-
setSerializer
public <T> void setSerializer(java.lang.Class<T> type, Json.Serializer<T> serializer)
Registers a serializer to use for the specified type instead of the default behavior of serializing all of an objects fields.
-
getSerializer
public <T> Json.Serializer<T> getSerializer(java.lang.Class<T> type)
-
setUsePrototypes
public void setUsePrototypes(boolean usePrototypes)
When true, field values that are identical to a newly constructed instance are not written. Default is true.
-
setElementType
public void setElementType(java.lang.Class type, java.lang.String fieldName, java.lang.Class elementType)
Sets the type of elements in a collection. When the element type is known, the class for each element in the collection does not need to be written unless different from the element type.
-
setDeprecated
public void setDeprecated(java.lang.Class type, java.lang.String fieldName, boolean deprecated)
The specified field will be treated as if it has or does not have theDeprecated
annotation.
-
setSortFields
public void setSortFields(boolean sortFields)
When true, fields are sorted alphabetically when written, otherwise the source code order is used. Default is false.- See Also:
sortFields(Class, Array)
-
sortFields
protected void sortFields(java.lang.Class type, Array<java.lang.String> fieldNames)
Called to sort the fields for a class. Default implementation sorts alphabetically ifsetSortFields(boolean)
is true.
-
toJson
public java.lang.String toJson(@Null java.lang.Object object)
-
toJson
public java.lang.String toJson(@Null java.lang.Object object, @Null java.lang.Class knownType)
-
toJson
public java.lang.String toJson(@Null java.lang.Object object, @Null java.lang.Class knownType, @Null java.lang.Class elementType)
- Parameters:
knownType
- May be null if the type is unknown.elementType
- May be null if the type is unknown.
-
toJson
public void toJson(@Null java.lang.Object object, FileHandle file)
-
toJson
public void toJson(@Null java.lang.Object object, @Null java.lang.Class knownType, FileHandle file)
- Parameters:
knownType
- May be null if the type is unknown.
-
toJson
public void toJson(@Null java.lang.Object object, @Null java.lang.Class knownType, @Null java.lang.Class elementType, FileHandle file)
- Parameters:
knownType
- May be null if the type is unknown.elementType
- May be null if the type is unknown.
-
toJson
public void toJson(@Null java.lang.Object object, java.io.Writer writer)
-
toJson
public void toJson(@Null java.lang.Object object, @Null java.lang.Class knownType, java.io.Writer writer)
- Parameters:
knownType
- May be null if the type is unknown.
-
toJson
public void toJson(@Null java.lang.Object object, @Null java.lang.Class knownType, @Null java.lang.Class elementType, java.io.Writer writer)
- Parameters:
knownType
- May be null if the type is unknown.elementType
- May be null if the type is unknown.
-
setWriter
public void setWriter(java.io.Writer writer)
Sets the writer where JSON output will be written. This is only necessary when not using the toJson methods.
-
getWriter
public JsonWriter getWriter()
-
writeFields
public void writeFields(java.lang.Object object)
Writes all fields of the specified object to the current JSON object.
-
writeField
public void writeField(java.lang.Object object, java.lang.String name)
-
writeField
public void writeField(java.lang.Object object, java.lang.String name, @Null java.lang.Class elementType)
- Parameters:
elementType
- May be null if the type is unknown.- See Also:
writeField(Object, String, String, Class)
-
writeField
public void writeField(java.lang.Object object, java.lang.String fieldName, java.lang.String jsonName)
-
writeField
public void writeField(java.lang.Object object, java.lang.String fieldName, java.lang.String jsonName, @Null java.lang.Class elementType)
Writes the specified field to the current JSON object.- Parameters:
elementType
- May be null if the type is unknown.
-
writeValue
public void writeValue(java.lang.String name, @Null java.lang.Object value)
Writes the value as a field on the current JSON object, without writing the actual class.- Parameters:
value
- May be null.- See Also:
writeValue(String, Object, Class, Class)
-
writeValue
public void writeValue(java.lang.String name, @Null java.lang.Object value, @Null java.lang.Class knownType)
Writes the value as a field on the current JSON object, writing the class of the object if it differs from the specified known type.- Parameters:
value
- May be null.knownType
- May be null if the type is unknown.- See Also:
writeValue(String, Object, Class, Class)
-
writeValue
public void writeValue(java.lang.String name, @Null java.lang.Object value, @Null java.lang.Class knownType, @Null java.lang.Class elementType)
Writes the value as a field on the current JSON object, writing the class of the object if it differs from the specified known type. The specified element type is used as the default type for collections.- Parameters:
value
- May be null.knownType
- May be null if the type is unknown.elementType
- May be null if the type is unknown.
-
writeValue
public void writeValue(@Null java.lang.Object value)
Writes the value, without writing the class of the object.- Parameters:
value
- May be null.
-
writeValue
public void writeValue(@Null java.lang.Object value, @Null java.lang.Class knownType)
Writes the value, writing the class of the object if it differs from the specified known type.- Parameters:
value
- May be null.knownType
- May be null if the type is unknown.
-
writeValue
public void writeValue(@Null java.lang.Object value, @Null java.lang.Class knownType, @Null java.lang.Class elementType)
Writes the value, writing the class of the object if it differs from the specified known type. The specified element type is used as the default type for collections.- Parameters:
value
- May be null.knownType
- May be null if the type is unknown.elementType
- May be null if the type is unknown.
-
writeObjectStart
public void writeObjectStart(java.lang.String name)
-
writeObjectStart
public void writeObjectStart(java.lang.String name, java.lang.Class actualType, @Null java.lang.Class knownType)
- Parameters:
knownType
- May be null if the type is unknown.
-
writeObjectStart
public void writeObjectStart()
-
writeObjectStart
public void writeObjectStart(java.lang.Class actualType, @Null java.lang.Class knownType)
Starts writing an object, writing the actualType to a field if needed.- Parameters:
knownType
- May be null if the type is unknown.
-
writeObjectEnd
public void writeObjectEnd()
-
writeArrayStart
public void writeArrayStart(java.lang.String name)
-
writeArrayStart
public void writeArrayStart()
-
writeArrayEnd
public void writeArrayEnd()
-
writeType
public void writeType(java.lang.Class type)
-
fromJson
@Null public <T> T fromJson(java.lang.Class<T> type, java.io.Reader reader)
- Parameters:
type
- May be null if the type is unknown.- Returns:
- May be null.
-
fromJson
@Null public <T> T fromJson(java.lang.Class<T> type, java.lang.Class elementType, java.io.Reader reader)
- Parameters:
type
- May be null if the type is unknown.elementType
- May be null if the type is unknown.- Returns:
- May be null.
-
fromJson
@Null public <T> T fromJson(java.lang.Class<T> type, java.io.InputStream input)
- Parameters:
type
- May be null if the type is unknown.- Returns:
- May be null.
-
fromJson
@Null public <T> T fromJson(java.lang.Class<T> type, java.lang.Class elementType, java.io.InputStream input)
- Parameters:
type
- May be null if the type is unknown.elementType
- May be null if the type is unknown.- Returns:
- May be null.
-
fromJson
@Null public <T> T fromJson(java.lang.Class<T> type, FileHandle file)
- Parameters:
type
- May be null if the type is unknown.- Returns:
- May be null.
-
fromJson
@Null public <T> T fromJson(java.lang.Class<T> type, java.lang.Class elementType, FileHandle file)
- Parameters:
type
- May be null if the type is unknown.elementType
- May be null if the type is unknown.- Returns:
- May be null.
-
fromJson
@Null public <T> T fromJson(java.lang.Class<T> type, char[] data, int offset, int length)
- Parameters:
type
- May be null if the type is unknown.- Returns:
- May be null.
-
fromJson
@Null public <T> T fromJson(java.lang.Class<T> type, java.lang.Class elementType, char[] data, int offset, int length)
- Parameters:
type
- May be null if the type is unknown.elementType
- May be null if the type is unknown.- Returns:
- May be null.
-
fromJson
@Null public <T> T fromJson(java.lang.Class<T> type, java.lang.String json)
- Parameters:
type
- May be null if the type is unknown.- Returns:
- May be null.
-
fromJson
@Null public <T> T fromJson(java.lang.Class<T> type, java.lang.Class elementType, java.lang.String json)
- Parameters:
type
- May be null if the type is unknown.- Returns:
- May be null.
-
readField
public void readField(java.lang.Object object, java.lang.String name, JsonValue jsonData)
-
readField
public void readField(java.lang.Object object, java.lang.String name, @Null java.lang.Class elementType, JsonValue jsonData)
-
readField
public void readField(java.lang.Object object, java.lang.String fieldName, java.lang.String jsonName, JsonValue jsonData)
-
readField
public void readField(java.lang.Object object, java.lang.String fieldName, java.lang.String jsonName, @Null java.lang.Class elementType, JsonValue jsonMap)
- Parameters:
elementType
- May be null if the type is unknown.
-
readField
public void readField(@Null java.lang.Object object, Field field, java.lang.String jsonName, @Null java.lang.Class elementType, JsonValue jsonMap)
- Parameters:
object
- May be null if the field is static.elementType
- May be null if the type is unknown.
-
readFields
public void readFields(java.lang.Object object, JsonValue jsonMap)
-
ignoreUnknownField
protected boolean ignoreUnknownField(java.lang.Class type, java.lang.String fieldName)
Called for each unknown field name encountered byreadFields(Object, JsonValue)
whenignoreUnknownFields
is false to determine whether the unknown field name should be ignored.- Parameters:
type
- The object type being read.fieldName
- A field name encountered in the JSON for which there is no matching class field.- Returns:
- true if the field name should be ignored and an exception won't be thrown by
readFields(Object, JsonValue)
.
-
readValue
@Null public <T> T readValue(java.lang.String name, @Null java.lang.Class<T> type, JsonValue jsonMap)
- Parameters:
type
- May be null if the type is unknown.- Returns:
- May be null.
-
readValue
@Null public <T> T readValue(java.lang.String name, @Null java.lang.Class<T> type, T defaultValue, JsonValue jsonMap)
- Parameters:
type
- May be null if the type is unknown.- Returns:
- May be null.
-
readValue
@Null public <T> T readValue(java.lang.String name, @Null java.lang.Class<T> type, @Null java.lang.Class elementType, JsonValue jsonMap)
- Parameters:
type
- May be null if the type is unknown.elementType
- May be null if the type is unknown.- Returns:
- May be null.
-
readValue
@Null public <T> T readValue(java.lang.String name, @Null java.lang.Class<T> type, @Null java.lang.Class elementType, T defaultValue, JsonValue jsonMap)
- Parameters:
type
- May be null if the type is unknown.elementType
- May be null if the type is unknown.- Returns:
- May be null.
-
readValue
@Null public <T> T readValue(@Null java.lang.Class<T> type, @Null java.lang.Class elementType, T defaultValue, JsonValue jsonData)
- Parameters:
type
- May be null if the type is unknown.elementType
- May be null if the type is unknown.- Returns:
- May be null.
-
readValue
@Null public <T> T readValue(@Null java.lang.Class<T> type, JsonValue jsonData)
- Parameters:
type
- May be null if the type is unknown.- Returns:
- May be null.
-
readValue
@Null public <T> T readValue(@Null java.lang.Class<T> type, @Null java.lang.Class elementType, JsonValue jsonData)
- Parameters:
type
- May be null if the type is unknown.elementType
- May be null if the type is unknown.- Returns:
- May be null.
-
copyFields
public void copyFields(java.lang.Object from, java.lang.Object to)
Each field on theto
object is set to the value for the field with the same name on thefrom
object. Theto
object must have at least all the fields of thefrom
object with the same name and type.
-
newInstance
protected java.lang.Object newInstance(java.lang.Class type)
-
prettyPrint
public java.lang.String prettyPrint(@Null java.lang.Object object)
-
prettyPrint
public java.lang.String prettyPrint(java.lang.String json)
-
prettyPrint
public java.lang.String prettyPrint(@Null java.lang.Object object, int singleLineColumns)
-
prettyPrint
public java.lang.String prettyPrint(java.lang.String json, int singleLineColumns)
-
prettyPrint
public java.lang.String prettyPrint(@Null java.lang.Object object, JsonValue.PrettyPrintSettings settings)
-
prettyPrint
public java.lang.String prettyPrint(java.lang.String json, JsonValue.PrettyPrintSettings settings)
-
-