Android y GSON lanzando No-Args Constructor no encontrado excepción
Tengo un problema con GSON en mi aplicación de Android.
Entrada JSON
- Analizando JSON en Java
- Parse simple JSON Array sin clave
- Configuración del tipo de contenido Json para el cliente Rest
- Cómo analizar con GSON cuando el identificador tiene espacio en el nombre
- ¿Está google gson funcionando en android?
[ {"id":"1202","parent_id":"0","agrpcount":"0","disp_order":"1","code":"PROD-NEW","name":"New Products","active":"1"}, {"id":"1119","parent_id":"0","agrpcount":"0","disp_order":"2","code":"PROD-VID","name":"\\\"How To\\\" Videos","active":"1"}, {"id":"1685","parent_id":"0","agrpcount":"0","disp_order":"3","code":"SUPP-RESOUR","name":"Support Resources","active":"1"}, {"id":"49","parent_id":"0","agrpcount":"0","disp_order":"109","code":"EQ","name":"Equipment for Sign Making","active":"1"}, {"id":"22","parent_id":"0","agrpcount":"0","disp_order":"110","code":"application-tape","name":"Application Tapes","active":"1"} ]
Clase de contenedor para cada elemento de matriz
public class Category { public int id; public int parent_id; public int agrpcount; public int disp_order; public String code; public String name; public int active; }
Clase para cargar la matriz de categorías
public static List<Category> getCategories(){ Category[] cats; Gson gson = new Gson(); cats = gson.fromJson(strJSON, Category[].class); List<Category> CatsList = Arrays.asList(cats); return CatsList; }
Cuando ejecuto este código, obtengo lo siguiente en el registro
02-28 15:15:42.471: ERROR/AndroidRuntime(777): Caused by: java.lang.RuntimeException: No-args constructor for class com.signwarehouse.catalog.SWService$Category does not exist. Register an InstanceCreator with Gson for this type to fix this problem. 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.MappedObjectConstructor.constructWithNoArgConstructor(MappedObjectConstructor.java:64) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.MappedObjectConstructor.construct(MappedObjectConstructor.java:53) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonObjectDeserializationVisitor.constructTarget(JsonObjectDeserializationVisitor.java:40) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonDeserializationVisitor.getTarget(JsonDeserializationVisitor.java:56) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:109) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonDeserializationVisitor.visitChild(JsonDeserializationVisitor.java:107) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonDeserializationVisitor.visitChildAsObject(JsonDeserializationVisitor.java:95) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonArrayDeserializationVisitor.visitArray(JsonArrayDeserializationVisitor.java:72) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:117) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonDeserializationContextDefault.fromJsonArray(JsonDeserializationContextDefault.java:64) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:49) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.Gson.fromJson(Gson.java:568) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.Gson.fromJson(Gson.java:515) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.Gson.fromJson(Gson.java:484) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.Gson.fromJson(Gson.java:434) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.Gson.fromJson(Gson.java:406)
Intenté agregar un constructor no-args a la clase Category, pero esto no ayudó. No es sorprendente ya que Java lo crea automáticamente.
¿Alguien tiene alguna idea de cómo solucionar este problema?
Gracias.
- Rellenar Listview de JSON
- Cómo mantener múltiples google-service.json en Android Studio
- Cómo tratar un objeto JSON grande en Android
- Cómo obtener una respuesta JSON grande en Android Sybase Unwired Platform
- Cannont resolver el símbolo JSONObject (Android Studio)
- Cómo almacenar datos de JSON analizados en SQLite
- El valor del tipo org.json.JSONArray no se puede convertir en JSONObject
- ¿Cómo puedo enviar JSon como BODY en una solicitud POST al servidor desde una aplicación de Android?
Tratando de convertir la clase Category en una clase pública estática …
public static class Category {/* fields */}
Apuesto a que lo que está pasando es que usted no hizo que la clase estática que está tratando de crear su padre / clase externa (com.signwarehouse.catalog.SWService) en primer lugar que probablemente no tiene un constructor no-arg.