我们在代码开发的时候,经常会遇到一些json格式化问题,比如说下面俩种
{
"code": 200,
"success": true,
"data": [
{
"name": "张三",
"age": 22,
"gender": "男"
},
{
"name": "李四",
"age": 19,
"gender": "女"
},
{
"name": "王五",
"age": 34,
"gender": "男"
},
{
"name": "赵六",
"age": 30,
"gender": "男"
},
{
"name": "田七",
"age": 25,
"gender": "女"
}
],
"msg": "操作成功"}
{
"code": 200,
"success": true,
"data": {
"current": 2,
"hitcount": false,
"optimizecountsql": true,
"orders": "",
"pager": 1,
"records": [
{
"name": "张三",
"age": 22,
"gender": "男"
},
{
"name": "李四",
"age": 19,
"gender": "女"
},
{
"name": "王五",
"age": 34,
"gender": "男"
},
{
"name": "赵六",
"age": 30,
"gender": "男"
},
{
"name": "田七",
"age": 25,
"gender": "女"
}
],
"searchcount": false,
"size": 10,
"total": 20
},
"msg": "操作成功"
}
其实俩个json传递的都是同一个数据对象,只不过外面包了一层或者俩层结构罢了,难道我们要为它创建俩个数据转化对象,no,no,no,我的强迫症不允许我这么做,所以我提供了一个万能的json格式化方法,可以解析任何层次的json数据,废话不多说,上代码。
1.到入json格式化依赖(这是谷歌的一个json格式化包)版本任选
com.google.code.gson
gson
2.8.0
org.projectlombok
lombok
1.16.10
provided
2.实体类(数据封装第一层的实体类)
/**
* 数据传输的第一层封装
*
* @author wanghuan
* @date 2021/10/27 17:39
*/
@data
public class basedatabean {
private string code;
private boolean success;
private t data;
private string msg;
}
具体数据实体类
@data
@allargsconstructor
@noargsconstructor
public class person implements serializable {
private string name;
private integer age;
private string gender;
}
3.格式化代码
//json化对象
gson gson = new gson();
//这俩步获取json字符串
file file = new file("d:\\workspace\\idea\\workstudy\\test\\src\\main\\java\\com\\wh\\1.json");
string string = fileutils.readfiletostring(file);
//格式化操作
basedatabean> listr = gson.fromjson(string,
new typetoken>>() {
}.gettype());
system.out.println(listr);
结果
这是dugger出来的数据结构。
4.用法
俩层的我就直接上代码了
第二层封装对象
/**
* 数据传输的第二层封装(可选择的)
*
* @author wanghuan
* @date 2021/10/27 17:41
*/
@data
public class databean {
private int current;
private boolean hitcount;
private boolean optimizecountsql;
private string orders;
private int pager;
private list records;
private boolean searchcount;
private int size;
private int total;
}
代码
gson gson = new gson();
file file = new file("d:\\workspace\\idea\\workstudy\\test\\src\\main\\java\\com\\wh\\2.json");
string string = fileutils.readfiletostring(file);
basedatabean>> bean = gson.fromjson(string,
new typetoken>>() {
}.gettype());
system.out.println(bean);
效果图
如果有问题大家可以评论或者私信都可以,如果有作用,请大家给个赞,支持作者,谢谢各位。
本篇博客到此结束,可能有一些描述不好或者不准确的地方,请见谅。