title: Using GSON with proguard enabled
body: <p>My code works perfectly without proguard, but GSON doesn't work when proguard is enabled.</p>
  
  <p>This is the part of code where it doesn't works</p>
  
  <pre><code>JSONArray mensaje = response.getJSONArray("categorias");
  // Parsear con Gson
  Categorias[] categorias = gson.fromJson(mensaje.toString(), Categorias[].class);
  Log.d("mainfragment","desc categoria "+categorias[0].getDescripcionCategoria());
  </code></pre>
  
  <p>mainfragment's log prints null</p>
  
  <pre><code># Output
  D/Dato categorias﹕ Respuesta: {"categorias":[{"idCategoria":"22","imagenCategoria":"ic_aseguradora","descripcionCategoria":"Aseguradoras"},{"idCategoria":"24","imagenCategoria":"ic_bar","descripcionCategoria":"Bares"},{"idCategoria":"12","imagenCategoria":"ic_boutique","descripcionCategoria":"Boutiques"},{"idCategoria":"6","imagenCategoria":"ic_cafe","descripcionCategoria":"Cafeterias"},{"idCategoria":"21","imagenCategoria":"ic_ciber","descripcionCategoria":"Ciber"},{"idCategoria":"10","imagenCategoria":"ic_estetica","descripcionCategoria":"Estéticas"},{"idCategoria":"1","imagenCategoria":"ic_farmacia","descripcionCategoria":"Farmacias"},{"idCategoria":"7","imagenCategoria":"ic_ferreteria","descripcionCategoria":"Ferreterias"},{"idCategoria":"16","imagenCategoria":"ic_gas","descripcionCategoria":"Gas"},{"idCategoria":"23","imagenCategoria":"ic_gasolinera","descripcionCategoria":"Gasolineras"},{"idCategoria":"4","imagenCategoria":"ic_gym","descripcionCategoria":"Gimnasios"},{"idCategoria":"2","imagenCategoria":"ic_hotel","descripcionCategoria":"Hoteles"},{"idCategoria":"15","imagenCategoria":"ic_lavanderia","descripcionCategoria":"Lavanderias"},{"idCategoria":"19","imagenCategoria":"ic_muebleria","descripcionCategoria":"Mueblerias"},{"idCategoria":"25","imagenCategoria":"ic_optica","descripcionCategoria":"Ópticas"},{"idCategoria":"20","imagenCategoria":"ic_pasteleria","descripcionCategoria":"Pastelerias"},{"idCategoria":"17","imagenCategoria":"ic_pizza","descripcionCategoria":"Pizzerías"},{"idCategoria":"13","imagenCategoria":"ic_purificadora","descripcionCategoria":"Purificadoras de agua"},{"idCategoria":"5","imagenCategoria":"ic_restaurant","descripcionCategoria":"Restaurantes"},{"idCategoria":"11","imagenCategoria":"ic_ropa","descripcionCategoria":"Ropa"},{"idCategoria":"9","imagenCategoria":"ic_salon","descripcionCategoria":"Salones de fiestas"},{"idCategoria":"3","imagenCategoria":"ic_sonido","descripcionCategoria":"Sonidos"},{"idCategoria":"28","imagenCategoria":"ic_taqueria","descripcionCategoria":"Taquería"},{"idCategoria":"8","imagenCategoria":"ic_taxi","descripcionCategoria":"Taxis"},{"idCategoria":"14","imagenCategoria":"ic_tortilleria","descripcionCategoria":"Tortillerias"},{"idCategoria":"27","imagenCategoria":"ic_veterinaria","descripcionCategoria":"Veterinarias"},{"idCategoria":"18","imagenCategoria":"ic_vinateria","descripcionCategoria":"Vinaterías"},{"idCategoria":"26","imagenCategoria":"ic_zapateria","descripcionCategoria":"Zapaterías"}],"estado":1}
  D/mainfragment﹕ desc categoria null
  </code></pre>
  
  <p>This are my proguard rules</p>
  
  <pre><code>#GoogleMaps
  -keep class * extends java.util.ListResourceBundle {
      protected Object[][] getContents();
  }
  
  -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
      public static final *** NULL;
  }
  
  -keepnames @com.google.android.gms.common.annotation.KeepName class *
  -keepclassmembernames class * {
      @ccom.google.android.gms.common.annotation.KeepName *;
  }
  
  -keepnames class * implements android.os.Parcelable {
      public static final ** CREATOR;
  }
  
  
  
  #Volley?
  
  -optimizationpasses 5
  -dontusemixedcaseclassnames
  -dontskipnonpubliclibraryclasses
  -dontpreverify
  -verbose
  -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
  
  
  -keep public class * extends android.app.Activity
  -keep public class * extends android.app.Application
  -keep public class * extends android.app.Service
   -keep public class * extends android.content.BroadcastReceiver
   -keep public class * extends android.content.ContentProvider
   -keep public class * extends android.app.backup.BackupAgentHelper
   -keep public class * extends android.preference.Preference
   -keep public class com.android.vending.licensing.ILicensingService
  -dontnote com.android.vending.licensing.ILicensingService
  
  -keepclassmembers class * implements java.io.Serializable {
       static final long serialVersionUID;
       private static final java.io.ObjectStreamField[] serialPersistentFields;
       private void writeObject(java.io.ObjectOutputStream);
       private void readObject(java.io.ObjectInputStream);
       java.lang.Object writeReplace();
       java.lang.Object readResolve();
   }
  
  
   -keepclasseswithmembernames class * {
       native &lt;methods&gt;;
   }
  
  
   -keepclasseswithmembers class * {
       public &lt;init&gt;(android.content.Context, android.util.AttributeSet);
   }
  
  
   -keepclasseswithmembers class * {
       public &lt;init&gt;(android.content.Context, android.util.AttributeSet, int);
   }
  
  
  -keepclassmembers class **.R$* {
     public static &lt;fields&gt;;
   }
  
   -keepclassmembers class * extends android.app.Activity {
      public void *(android.view.View);
   }
  
  
   -keepclassmembers enum * {
       public static **[] values();
       public static ** valueOf(java.lang.String);
   }
  
  -keep public class * {
       public protected *;
   }
  
  
  
   -keep class * implements android.os.Parcelable {
     public static final android.os.Parcelable$Creator *;
   }
  
   -keep class android.support.v7.widget.SearchView
   -keep class android.support.v7.widget.**{*;}
   -keep class android.support.v4.app.** { *; }
   -keep interface android.support.v4.app.** { *; }
   -keep class com.actionbarsherlock.** { *; }
   -keep interface com.actionbarsherlock.** { *; }
   -keep class com.android.volley.** { *; }
   -keep interface com.android.volley.** { *; }
   -keepattributes *Annotation*
  
  
  ##---------------Begin: proguard configuration for Gson  ----------
  # Gson uses generic type information stored in a class file when working with fields. Proguard
  # removes such information by default, so configure it to keep all of it.
  -keepattributes Signature
  # For using GSON @Expose annotation
  #-keepattributes *Annotation*
  -keepattributes EnclosingMethod
  
  # Gson specific classes
  -keep class sun.misc.Unsafe { *; }
  -keep class com.google.gson.stream.** { *; }
  
  # Application classes that will be serialized/deserialized over Gson
   -keep class Categorias.data.model.** { *; }
   -keep class Categorias.** { *; }
  
  # Application classes that will be serialized/deserialized over Gson
  -keep class com.google.gson.examples.android.model.** { *; }
  -keep class com.puertosoft.appcomercialdelpuerto.android.model.** { *; }
  -keep class com.puertosoft.appcomercialdelpuerto.model.** { *; }
  -keep class com.puertosoft.appcomercialdelpuerto.model.User { *; }
  
  # Add the gson class
  -keep public class com.google.gson
  
  # Add any classes the interact with gson
  -keep class com.puertosoft.appcomercialdelpuerto.models.ChatModel { *; }
  -keep class com.puertosoft.appcomercialdelpuerto.models.FeedModel { *; }
  -keep class com.puertosoft.appcomercialdelpuerto.android.models.ChatModel { *; }
  -keep class com.puertosoft.appcomercialdelpuerto.android.models.FeedModel { *; }
  
  -libraryjars /build/intermediates/pre-dexed/debug/gson-2.3-08958b96da94c86264ec30e35a9d524bac95d2df.jar
  
  
  
  
  -printmapping outputfile.txt
  -renamesourcefileattribute SourceFile
  #-keepattributes SourceFile,LineNumberTable
  </code></pre>
  
  <p>This is the affected class</p>
  
  <pre><code>public class Categorias {
  
      private String idCategoria;
      private String descripcionCategoria;
      private String imagenCategoria;
  
      public Categorias(String idCategoria, String descripcionCategoria, String imagenCategoria){
          this.idCategoria=idCategoria;
          this.descripcionCategoria=descripcionCategoria;
          this.imagenCategoria=imagenCategoria;
      }
  
      public String getIdCategoria(){
          return idCategoria;
      }
  
      public String getDescripcionCategoria(){
          return descripcionCategoria;
      }
  
      public String getImagenCategoria(){
          return imagenCategoria;
      }
  
  }
  </code></pre>