使用Gson解析json在打包混淆时出错的解决方法
来源:互联网 发布:淘宝晒单福利图2000p 编辑:程序博客网 时间:2024/06/02 02:06
本人转载地址:http://blog.csdn.net/u013224148/article/details/41146387
方法一:
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.** {*;}
阅读全文
0 0
- 使用Gson解析json在打包混淆时出错的解决方法
- 使用Gson解析json在打包混淆时出错的解决方法
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- Gson 解析json的使用
- JSON解析 Gson的使用
- Gson的混淆打包问题
- [Android]添加第三方jar后,使用ProGuard混淆打包出错的解决方法
- Gson的使用——Gson解析json数组并展示在ListView控件上
- Gson的使用——Gson解析json数组并展示在ListView控件上
- Gson的使用——Gson解析json数组并展示在ListView控件上
- 关于在使用gson解析json时建模与规范冲突的问题
- 使用Gson解析Json
- 使用Gson解析json
- 使用Gson解析json
- 使用Gson解析json
- 使用GSON解析json
- 使用Jenkins配置Git+Maven的自动化构建
- 二叉树中和为某一值的路径
- 如何控制使用thymeleaf不在控制台打印日志
- Spark Streaming整合Kafka(一)
- 基于asp.net + easyui框架——实现添加、编辑、删除(三)
- 使用Gson解析json在打包混淆时出错的解决方法
- C#基础知识点(二)
- Hibernate与 MyBatis的比较
- img水平垂直居中
- 每日一练(20171109)
- 运行python脚本的几种方法
- Redis学习笔记之十三:Redis集群
- 一些Android属性的积累
- 获取 APP 的 Launch Image