Android JSON数据与实体类之间的相互转化-------GSON的用法
- 1_Gson的导入
- 1.1_方法一:直接导入jar包
- 1.2_方法二:引入依赖
- 2_json形式的字符串互转实体对象
- 2.1_json字符串与单个实体对象互转
- 2.2_json与list互转
- 3_遇到的问题
- 3.1_前后端对象成员变量类型不一致导致转换失败
- 3.2_json时间格式不对将转换失败
1_Gson的导入
1.1_方法一:直接导入jar包
下载地址
或github开源地址
完成之后导入libs包即可
1.2_方法二:引入依赖
dependencies {implementation 'com.google.code.gson:gson:2.8.4'
}
2_json形式的字符串互转实体对象
2.1_json字符串与单个实体对象互转
比如有一个user对象
public class User {int id;int faceRequestId;String account;String password;String phone;
}
//json转实体
Gson gson = new Gson();
User user = gson.fromJson(return_string, User.class);
//实体转json
String userJson = gson.toJson(user);
转载
2.2_json与list互转
Gson gson = new Gson();List<Point> list = gson.fromJson(response, new TypeToken<List<Point>>() {}.getType());for (Point point : list) {Log.i("tag",point.toString());}
3_遇到的问题
3.1_前后端对象成员变量类型不一致导致转换失败
这次我的错误是后端的是普通成员变量,而前端的是静态成员变量,如下:
//后端
public class User {public int id;public int faceId;public String account;public String password;public String qqEmail;public String headPortrait;}
//前端
public class User {public int id;public int faceId;public String account;public String password;public String qqEmail;public String headPortrait;
}
3.2_json时间格式不对将转换失败
报错内容:
java.lang.IndexOutOfBoundsException: Invalid time zone indicator ' '
解决方法:
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();