android - libreria - json en java
Gson y Android activo: se ha intentado serializar java.lang.Class. ¿Olvidó registrar un adaptador de tipo? (2)
Lo averigué. Por supuesto, la clase de modelo base de Active Android está agregando campos que no pueden ser serializados por defecto. Esos campos se pueden ignorar usando la opción excluedFieldsWithoutExposeAnnotation()
Gson, de la siguiente manera:
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
String json = gson.toJson(new Book());
Modifique la clase con la anotación @Expose
para indicar qué campos deben ser serializados:
@Table(name = "Foo")
public class Foo extends Model {
@Expose
@Column(name = "Name")
public String name;
@Expose
@Column(name = "Sort")
public int sort;
...
}
Estoy usando Gson para serializar un modelo Active Android. La clase de modelo solo contiene primitivas, y Gson no debería tener problemas para serializarla con la configuración predeterminada. Sin embargo, cuando lo intento, me sale el error:
java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: <MyClass>. Forgot to register a type adapter?
Realmente preferiría no escribir un adaptador de tipo para cada una de mis clases modelo, ¿cómo puedo solucionar este problema?
una forma más fácil es inicializar su Gson como se muestra a continuación para evitar la serialización de los campos Final, Transitorio o Estático
Gson gson = new GsonBuilder()
.excludeFieldsWithModifiers(Modifier.FINAL, Modifier.TRANSIENT, Modifier.STATIC)
.serializeNulls()
.create();