Gson
- 添加依赖: implementation 'com.google.code.gson:gson:2.8.6'
对象的序列化与反序列化
| User user = new User("wmj", "666", 24, false); |
| Job teacher = new Job("teacher", 10000); |
| user.setJob(teacher); |
| |
| Gson gson = new Gson(); |
| |
| |
| String json = gson.toJson(user); |
| System.out.println(json); |
| |
| |
| User user1 = gson.fromJson(json, User.class); |
| System.out.println(user1.getJob().getName()); |
Array的序列化
- User[] users1 = gson.fromJson(json, User[].class);
| User[] users = new User[3]; |
| users[0] = new User("wmj", "666", 24, false); |
| users[0].setJob(teacher); |
| users[2] = new User("wmj", "666", 24, false); |
| users[2].setJob(new Job()); |
| |
| json = gson.toJson(users); |
| Log.d("wmj", "onCreate: " + json); |
| |
| User[] users1 = gson.fromJson(json, User[].class); |
| Log.d("wmj", "onCreate: " + users1[0].getJob().getSalary()); |
List的序列化
- Type type = new TypeToken<List>(){}.getType();
| List<User> list = new ArrayList<>(); |
| list.add(users[0]); |
| list.add(users[1]); |
| list.add(users[2]); |
| |
| |
| json = gson.toJson(list); |
| Log.d("wmj", "onCreate: " + json); |
| |
| |
| Type type = new TypeToken<List<User>>(){}.getType(); |
| List<User> list1 = gson.fromJson(json, type); |
| Log.d("wmj", "onCreate: " + list1.get(0).getJob().getSalary()); |
Map的序列化
| Map<String, User> map = new HashMap<>(); |
| map.put("1", users[0]); |
| map.put("2", users[1]); |
| map.put("3", users[2]); |
| map.put(null, null); |
| |
| json = gson.toJson(map); |
| Log.d("wmj", "onCreate: " + json); |
| |
| Type type = new TypeToken<Map<String, User>>(){}.getType(); |
| Map<String, User> map1 = gson.fromJson(json, type); |
| Log.d("wmj", "onCreate: " + map1.get("1").getJob().getSalary()); |
Set的序列化
| Set<User> set = new HashSet<>(); |
| set.add(users[0]); |
| set.add(users[1]); |
| set.add(users[2]); |
| |
| json = gson.toJson(set); |
| Log.d("wmj", "onCreate: " + json); |
| |
| Type type = new TypeToken<List<User>>(){}.getType(); |
| List<User> list = gson.fromJson(json, type); |
| Log.d("wmj", "onCreate: " + list.get(1).getJob().getSalary()); |
| |
| Type type1 = new TypeToken<Set<User>>(){}.getType(); |
| Set<User> set1 = gson.fromJson(json, type1); |
| Iterator<User> iterator = set1.iterator(); |
| while (iterator.hasNext()){ |
| User next = iterator.next(); |
| Log.d("wmj", "onCreate: " + next); |
| } |
值为null的序列化
- 集合里有数据为null,gson不忽略
- 对象的属性为null,会被忽略
控制序列化反序列化变量名称
| @SerializedName("class") |
| private int cls; |
| |
| @Expose(serialize = false, deserialize = false) |
| private String password; |
| |
| private transient int age; |
本文作者:n1ce2cv
本文链接:https://www.cnblogs.com/sprinining/p/14955081.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步