解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
2013-11-14 00:00
1211 查看
解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
方法一:
Gson gson = new Gson();
// 将json格式字符串转化为List<对象>
Type listType = new TypeToken<ArrayList<PersonMsgMini>>(){}.getType();
personMsgList = gson.fromJson(jsonObject.getString("list"), listType);
方法二:
public class AttendanceMsgGson
{
//字段名要跟json字符串中的key一致
private ArrayList<AttendanceMsg> list;
public ArrayList<AttendanceMsg> getList()
{
return list;
}
public void setList(ArrayList<AttendanceMsg> list)
{
this.list = list;
}
}
Gson gson = new Gson();
AttendanceMsgGson attGson = gson.fromJson(result, AttendanceMsgGson.class);
下面是重点:
说明:
其中两种gson解析json字符串的方法都没有问题,问题主要是使用了混淆编译的方式进行apk打包(其中不混淆编译进行apk打包则一切正常),因为客户端代码中的
JavaBean(实体类)的字段名称必须与服务端返回json字符串中的key要一致,才能进行解析,而混淆编
译之后,客户端代码中的JavaBean(实体类)的类名与其字段名称全部变成了a、b、c、d等等字符串,这与服务端返回的json字符串中的key不一致,导致解析失败。所以,解决的办法是:在进行混淆编译进行打包apk的时候,过滤掉存放所有JavaBean(实体类)的包不进行混淆编译。经过测试,一切正常。
在proguard.cfg文件中添加:
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# 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 com.google.gson.examples.android.model.** { *; }
//这句非常重要,主要是滤掉 com.bgb.scan.model包下的所有.class文件不进行混淆编译
-keep class com.bgb.scan.model.** {*;}
方法一:
Gson gson = new Gson();
// 将json格式字符串转化为List<对象>
Type listType = new TypeToken<ArrayList<PersonMsgMini>>(){}.getType();
personMsgList = gson.fromJson(jsonObject.getString("list"), listType);
方法二:
public class AttendanceMsgGson
{
//字段名要跟json字符串中的key一致
private ArrayList<AttendanceMsg> list;
public ArrayList<AttendanceMsg> getList()
{
return list;
}
public void setList(ArrayList<AttendanceMsg> list)
{
this.list = list;
}
}
Gson gson = new Gson();
AttendanceMsgGson attGson = gson.fromJson(result, AttendanceMsgGson.class);
下面是重点:
说明:
其中两种gson解析json字符串的方法都没有问题,问题主要是使用了混淆编译的方式进行apk打包(其中不混淆编译进行apk打包则一切正常),因为客户端代码中的
JavaBean(实体类)的字段名称必须与服务端返回json字符串中的key要一致,才能进行解析,而混淆编
译之后,客户端代码中的JavaBean(实体类)的类名与其字段名称全部变成了a、b、c、d等等字符串,这与服务端返回的json字符串中的key不一致,导致解析失败。所以,解决的办法是:在进行混淆编译进行打包apk的时候,过滤掉存放所有JavaBean(实体类)的包不进行混淆编译。经过测试,一切正常。
在proguard.cfg文件中添加:
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# 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 com.google.gson.examples.android.model.** { *; }
//这句非常重要,主要是滤掉 com.bgb.scan.model包下的所有.class文件不进行混淆编译
-keep class com.bgb.scan.model.** {*;}
相关文章推荐
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- 在线聊天项目1.4版 使用Gson方法解析Json字符串以便重构request和response的各种请求和响应 解决聊天不畅问题 Gson包下载地址
- 使用Gson解析json在打包混淆时出错的解决方法
- 使用Gson解析json在打包混淆时出错的解决方法
- 在线聊天项目1.4版 使用Gson方法解析Json字符串以便重构request和response的各种请求和响应 解决聊天不畅问题 Gson包下载地址
- 使用Gson解析Json数组遇到的泛型类型擦除问题解决方法
- Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式
- [Android]使用 Eclipse 给 APK 签名时遇到的两个问题及解决办法
- Android使用Ant打包所遇到问题的解决方法
- Android编程之解决android-support-v4打包混淆编译的问题
- 使用mac gradle指令 打包安卓apk遇到$TERM not set问题解决办法
- Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式
- 《Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式》
- Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式
- android 打包 生成apk 出现的问题 javascript失效 json解析失败 解决方案
- Android编程之解决android-support-v4打包混淆编译的问题
- android打包apk时混淆遇到的问题
- Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式