首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Gson的使用?Json如何转成集合?

Gson的使用?Json如何转成集合?

这么简单,谁不会用呀!

对吧!

我相信大多数同学都是会用的

- 字符串转对象

- 对象转字符串

但是转集合的话,可能有些同学就不会了。因为用得少。

那么?你有没有遇到这样的问题呢?

集合转字符串很简单,那么字符串转集合呢?

>>>>

添加依赖

Gradle

implementation 'com.google.code.gson:gson:2.8.6'

Maven

com.google.code.gson gson 2.8.5

>>>>

基本使用

- 字符串转对象

使用场景:在android开发中,现在基本上数据以json的格式进行交互。我们从服务器请求回来的数据,一般是json格式的。我们要更方便地使用这些数据,先把它转成对象。

比如说我们要把这个json字符串转成对象

{ "age":28, "gender":"male", "name":"President", "position":"CEO"}

对象的实体类是persion

private class Employee { private int age; private String name; private String gender; private String position;

...getter and setter...}

从json转成object

有这么多

这样转就可以了

Employee employeeObject = gson.fromJson(employeeJson,Employee.class);

这是最基本的使用

- 对象转字符串

你向服务器提交数据的时候,是不是要把对象转成json呢?你直接给一个对象,那不就是内存地址吗?后台肯定拿不到呀。

对象转字符串也很简单。

比如说我们把上面的Employee转成json

String employeeJson = gson.toJson(employee);

这就搞定了,得到json字符串

输出看看

{"age":28,"gender":"male","name":"President","position":"CEO"}

>>>>

Json如何转集合?

集合涉及到泛型,这个怎么转呢?

集合转json很简单,因为toJson可以传Object,也就是万物皆可json

我们先把一个集合内容转成json吧。

Gson gson = new Gson();List employees = new ArrayList();Employee zhangsan = new Employee();zhangsan.setAge(28);zhangsan.setGender("male");zhangsan.setPosition("dev");zhangsan.setName("zhangsan");employees.add(zhangsan);//Employee lisi = new Employee();lisi.setAge(30);lisi.setGender("male");lisi.setPosition("manager");lisi.setName("lisi");employees.add(lisi);//Employee wangwu = new Employee();wangwu.setAge(30);wangwu.setGender("male");wangwu.setPosition("seller");wangwu.setName("wangwu");employees.add(wangwu);String employeesJson = gson.toJson(employees);Log.d(TAG,"employeesJson: " + employeesJson);

结果:

[ { "age":28, "gender":"male", "name":"zhangsan", "position":"dev" }, { "age":30, "gender":"male", "name":"lisi", "position":"manager" }, { "age":30, "gender":"male", "name":"wangwu", "position":"seller" }]

这还是挺简单的

那么json怎么转集合呢?

也就是要把上面这个字符串json,转成List

第一种方法:json-->数组-->集合

第二种方法:json --> 集合

>>>>

gson还可以用于复制对象

我们有些时间需要复制对象,比如说我们使用JPA查询出来的数据,比如说查询出了用户列表,但是我们不希望密码这些敏感信息给到客户端。所以我们需要把密码干掉。

当然,可以查询部分内容。

如果你查询了所有内容,你怎么处理呢?直接把对象的密码set为空吗?

这可不行,此时事务还没有结束,如果你设置为空,那事务一提交,你数据库的密码就为空了。

这个时候 我们需要复制对象,把复制的对象返回给客户端即可。

复制对象可以使用clone,也可以使用新创建的方式,通过属性工具类把对象的传给到新创建的对象。

也可以使用gson,先转成Json,再转成新的对象。

这样子,新的对象改值,返回给客户端即可。多处用到这个复制对象,可以写成工具类。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200505A09ZWG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券