Package com.badlogic.gdx.utils
Class Json
- java.lang.Object
-
- com.badlogic.gdx.utils.Json
-
public class Json extends java.lang.ObjectReads/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 classJson.ReadOnlySerializer<T>static interfaceJson.Serializablestatic interfaceJson.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 voidaddClassTag(java.lang.String tag, java.lang.Class type)Sets a tag to use instead of the fully qualifier class name.voidcopyFields(java.lang.Object from, java.lang.Object to)Each field on thetoobject is set to the value for the field with the same name on thefromobject.<T> TfromJson(java.lang.Class<T> type, char[] data, int offset, int length)<T> TfromJson(java.lang.Class<T> type, FileHandle file)<T> TfromJson(java.lang.Class<T> type, java.io.InputStream input)<T> TfromJson(java.lang.Class<T> type, java.io.Reader reader)<T> TfromJson(java.lang.Class<T> type, java.lang.Class elementType, char[] data, int offset, int length)<T> TfromJson(java.lang.Class<T> type, java.lang.Class elementType, FileHandle file)<T> TfromJson(java.lang.Class<T> type, java.lang.Class elementType, java.io.InputStream input)<T> TfromJson(java.lang.Class<T> type, java.lang.Class elementType, java.io.Reader reader)<T> TfromJson(java.lang.Class<T> type, java.lang.Class elementType, java.lang.String json)<T> TfromJson(java.lang.Class<T> type, java.lang.String json)java.lang.ClassgetClass(java.lang.String tag)Returns the class for the specified tag, or null.booleangetIgnoreUnknownFields()<T> Json.Serializer<T>getSerializer(java.lang.Class<T> type)java.lang.StringgetTag(java.lang.Class type)Returns the tag for the specified class, or null.JsonWritergetWriter()protected booleanignoreUnknownField(java.lang.Class type, java.lang.String fieldName)Called for each unknown field name encountered byreadFields(Object, JsonValue)whenignoreUnknownFieldsis false to determine whether the unknown field name should be ignored.protected java.lang.ObjectnewInstance(java.lang.Class type)java.lang.StringprettyPrint(java.lang.Object object)java.lang.StringprettyPrint(java.lang.Object object, int singleLineColumns)java.lang.StringprettyPrint(java.lang.Object object, JsonValue.PrettyPrintSettings settings)java.lang.StringprettyPrint(java.lang.String json)java.lang.StringprettyPrint(java.lang.String json, int singleLineColumns)java.lang.StringprettyPrint(java.lang.String json, JsonValue.PrettyPrintSettings settings)voidreadField(java.lang.Object object, Field field, java.lang.String jsonName, java.lang.Class elementType, JsonValue jsonMap)voidreadField(java.lang.Object object, java.lang.String name, JsonValue jsonData)voidreadField(java.lang.Object object, java.lang.String name, java.lang.Class elementType, JsonValue jsonData)voidreadField(java.lang.Object object, java.lang.String fieldName, java.lang.String jsonName, JsonValue jsonData)voidreadField(java.lang.Object object, java.lang.String fieldName, java.lang.String jsonName, java.lang.Class elementType, JsonValue jsonMap)voidreadFields(java.lang.Object object, JsonValue jsonMap)<T> TreadValue(java.lang.Class<T> type, JsonValue jsonData)<T> TreadValue(java.lang.Class<T> type, java.lang.Class elementType, JsonValue jsonData)<T> TreadValue(java.lang.Class<T> type, java.lang.Class elementType, T defaultValue, JsonValue jsonData)<T> TreadValue(java.lang.String name, java.lang.Class<T> type, JsonValue jsonMap)<T> TreadValue(java.lang.String name, java.lang.Class<T> type, java.lang.Class elementType, JsonValue jsonMap)<T> TreadValue(java.lang.String name, java.lang.Class<T> type, java.lang.Class elementType, T defaultValue, JsonValue jsonMap)<T> TreadValue(java.lang.String name, java.lang.Class<T> type, T defaultValue, JsonValue jsonMap)voidsetDefaultSerializer(Json.Serializer defaultSerializer)Sets the serializer to use when the type being deserialized is not known (null).voidsetDeprecated(java.lang.Class type, java.lang.String fieldName, boolean deprecated)The specified field will be treated as if it has or does not have theDeprecatedannotation.voidsetElementType(java.lang.Class type, java.lang.String fieldName, java.lang.Class elementType)Sets the type of elements in a collection.voidsetEnumNames(boolean enumNames)When true,Enum.name()is used to write enum values.voidsetIgnoreDeprecated(boolean ignoreDeprecated)When true, fields with theDeprecatedannotation will not be read or written.voidsetIgnoreUnknownFields(boolean ignoreUnknownFields)When true, fields in the JSON that are not found on the class will not throw aSerializationException.voidsetOutputType(JsonWriter.OutputType outputType)Default isJsonWriter.OutputType.minimal.voidsetQuoteLongValues(boolean quoteLongValues)Default is false.voidsetReadDeprecated(boolean readDeprecated)When true, fields with theDeprecatedannotation will be read (but not written) whensetIgnoreDeprecated(boolean)is true.<T> voidsetSerializer(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.voidsetSortFields(boolean sortFields)When true, fields are sorted alphabetically when written, otherwise the source code order is used.voidsetTypeName(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.voidsetUsePrototypes(boolean usePrototypes)When true, field values that are identical to a newly constructed instance are not written.voidsetWriter(java.io.Writer writer)Sets the writer where JSON output will be written.protected voidsortFields(java.lang.Class type, Array<java.lang.String> fieldNames)Called to sort the fields for a class.java.lang.StringtoJson(java.lang.Object object)voidtoJson(java.lang.Object object, FileHandle file)voidtoJson(java.lang.Object object, java.io.Writer writer)java.lang.StringtoJson(java.lang.Object object, java.lang.Class knownType)voidtoJson(java.lang.Object object, java.lang.Class knownType, FileHandle file)voidtoJson(java.lang.Object object, java.lang.Class knownType, java.io.Writer writer)java.lang.StringtoJson(java.lang.Object object, java.lang.Class knownType, java.lang.Class elementType)voidtoJson(java.lang.Object object, java.lang.Class knownType, java.lang.Class elementType, FileHandle file)voidtoJson(java.lang.Object object, java.lang.Class knownType, java.lang.Class elementType, java.io.Writer writer)voidwriteArrayEnd()voidwriteArrayStart()voidwriteArrayStart(java.lang.String name)voidwriteField(java.lang.Object object, java.lang.String name)voidwriteField(java.lang.Object object, java.lang.String name, java.lang.Class elementType)voidwriteField(java.lang.Object object, java.lang.String fieldName, java.lang.String jsonName)voidwriteField(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.voidwriteFields(java.lang.Object object)Writes all fields of the specified object to the current JSON object.voidwriteObjectEnd()voidwriteObjectStart()voidwriteObjectStart(java.lang.Class actualType, java.lang.Class knownType)Starts writing an object, writing the actualType to a field if needed.voidwriteObjectStart(java.lang.String name)voidwriteObjectStart(java.lang.String name, java.lang.Class actualType, java.lang.Class knownType)voidwriteType(java.lang.Class type)voidwriteValue(java.lang.Object value)Writes the value, without writing the class of the object.voidwriteValue(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.voidwriteValue(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.voidwriteValue(java.lang.String name, java.lang.Object value)Writes the value as a field on the current JSON object, without writing the actual class.voidwriteValue(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.voidwriteValue(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 theDeprecatedannotation will not be read or written. Default is false.
-
setReadDeprecated
public void setReadDeprecated(boolean readDeprecated)
When true, fields with theDeprecatedannotation 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 theDeprecatedannotation.
-
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)whenignoreUnknownFieldsis 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 thetoobject is set to the value for the field with the same name on thefromobject. Thetoobject must have at least all the fields of thefromobject 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)
-
-