Class 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
    • 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 the to object is set to the value for the field with the same name on the from 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 by readFields(Object, JsonValue) when ignoreUnknownFields 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 the Deprecated 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 the Deprecated 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 a SerializationException.
      void setOutputType​(JsonWriter.OutputType outputType)
      void setQuoteLongValues​(boolean quoteLongValues)
      Default is false.
      void setReadDeprecated​(boolean readDeprecated)
      When true, fields with the Deprecated annotation will be read (but not written) when setIgnoreDeprecated(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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • setIgnoreUnknownFields

        public void setIgnoreUnknownFields​(boolean ignoreUnknownFields)
        When true, fields in the JSON that are not found on the class will not throw a SerializationException. Default is false.
      • getIgnoreUnknownFields

        public boolean getIgnoreUnknownFields()
      • 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 the Deprecated annotation.
        See Also:
        setIgnoreDeprecated(boolean), setReadDeprecated(boolean)
      • 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 if setSortFields(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.
      • 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,
                               @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,
                               @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 by readFields(Object, JsonValue) when ignoreUnknownFields 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 the to object is set to the value for the field with the same name on the from object. The to object must have at least all the fields of the from 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)