一般使用gson如下:

Gson gson = new Gson();

AttendanceMsgGson attGson = gson.fromJson(result, AttendanceMsgGson.class);

问题来了:使用了混淆编译的方式进行apk打包(其中不混淆编译进行apk打包则一切正常)就不能获取到值了!

原因是:因为客户端代码中的JavaBean(实体类)的字段名称必须与服务端返回json字符串中的key要一致,才能进行解析,而混淆编译之后,客户端代码中的JavaBean(实体类)的类名与其字段名称全部变成了a、b、c、d等等字符串,这与服务端返回的json字符串中的key不一致,导致解析失败。所以,

解决的办法是:在进行混淆编译进行打包apk的时候,过滤掉存放所有JavaBean(实体类)的包不进行混淆编译。

在proguard.cfg文件中添加:

#removessuchinformationbydefault,soconfigureittokeepallofit.-keepattributesSignature#Gsonspecificclasses-keepclasssun.misc.Unsafe{*;}-keepclasscom.google.gson.stream.**{*;}#Applicationclassesthatwillbeserialized/deserializedoverGson-keepclasscom.google.gson.examples.android.model.**{*;}-keepclasscom.google.gson.**{*;}#这句非常重要,主要是滤掉com.bgb.scan.model包下的所有.class文件不进行混淆编译-keepclasscom.bgb.scan.model.**{*;}

经过测试,一切正常。

更多相关文章

  1. NDK的sample里hello-gl2编译通过,运行报错
  2. Android混淆之FastJSON坑java.lang.ClassCastException: com.ali
  3. SpannableStringBuilder 和 SpannableString
  4. Android(安卓)NDK编译选项设置
  5. linux/android mk文件
  6. AndroidStudio创建TV-APP,出现Error:(28, 13) Failed to resolve:
  7. [置顶] Android中如何加入busybox
  8. Android源码环境下编译自带JNI的APP
  9. 零基础Android(安卓)Studio 入门爬坑记

随机推荐

  1. Android(安卓)全面屏的和有导航栏的判断
  2. Android的NDK开发(5)————Android(安
  3. Android(安卓)DOC文档分析——Dialog
  4. android 获取屏幕的方向
  5. 【notification】Android(安卓)中创建状
  6. Android(安卓)studio Caused by: org.gra
  7. 关于android studio报错transformClasses
  8. Known Free Software Android(安卓)Appli
  9. Android通知Notification
  10. Android中Parcelable接口用法