我们在代码开发的时候,经常会遇到一些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格式化包)版本任选

 <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.0</version></dependency><!--lombak工具(可选)--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.10</version><scope>provided</scope></dependency>

2.实体类(数据封装第一层的实体类)

/*** 数据传输的第一层封装** @author WangHuan* @date 2021/10/27 17:39*/
@Data
public class BaseDataBean<T> {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<List<Person>> listR = gson.fromJson(string,new TypeToken<BaseDataBean<List<Person>>>() {}.getType());System.out.println(listR);

结果

这是dugger出来的数据结构。

4.用法

俩层的我就直接上代码了

第二层封装对象

/*** 数据传输的第二层封装(可选择的)** @author WangHuan* @date 2021/10/27 17:41*/
@Data
public class DataBean<T> {private int current;private boolean hitCount;private boolean optimizeCountSql;private String orders;private int pager;private List<T> 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<DataBean<List<Person>>> bean = gson.fromJson(string,new TypeToken<BaseDataBean<DataBean<Person>>>() {}.getType());System.out.println(bean);

效果图

如果有问题大家可以评论或者私信都可以,如果有作用,请大家给个赞,支持作者,谢谢各位。
本篇博客到此结束,可能有一些描述不好或者不准确的地方,请见谅。

万能的json格式化相关推荐

  1. 浏览器json格式化插件 yformater

    本人最近做的工作就是写interface,几个前端写前端,他们需要什么样的数据格式,我就得返回这样的数据格式.这就导致每一个接口都得检查json格式是否是他们所需要的.但浏览器直接请求的json格式很 ...

  2. ABP入门系列(8)——Json格式化

    ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 讲完了分页功能,这一节我们先不急着实现新的功能.来简要介绍下Abp中Json的用法.为什么要在这一 ...

  3. ELK之日志收集filebeat,并对nginx,tomcat access日志JSON格式化

    2019独角兽企业重金招聘Python工程师标准>>> 一:ELK日志收集器组件filebeat下载 官方下载地址:https://www.elastic.co/downloads/ ...

  4. json格式化和查看工具

    以前一直以来都觉得xml个可读性要比json的可读性好,后来使用了JSON Viewer这个小工具之后,发现自己错了.之前认为json的可读性差,完全是因为没有很好的查看工具.JSON Viewer这 ...

  5. golang Time JSON格式化问题

    golang Time JSON格式化问题 golang 的Time类型在格式化成JSON字符串的时候格式是 2006-01-02T15:04:05.999999999Z07:00 这种UTC的格式, ...

  6. golang json 格式化输出对象

    Json 形式输出 Golang 如果想要按json字符串的形式输出某个对象,先使用 json.Marshal()函数把对象转换成[]byte数组,然后string(obj)强转成字符串后用%v输出, ...

  7. vue项目json格式化显示

    1.在项目开发中遇到json数据展示 2.利用函数进行json格式化 transitionJsonToString(jsonObj, callback) {// 转换后的jsonObj受体对象var ...

  8. abp.ajax get,ABP入门系列之Json格式化

    讲完了分页功能,这一节我们先不急着实现新的功能.来简要介绍下Abp中Json的用法.为什么要在这一节讲呢?当然是做铺垫啊,后面的系列文章会经常和Json这个东西打交道. 一.Json是干什么的 JSO ...

  9. js简单实现一个json格式化功能

    js简单实现一个json格式化功能 背景 html 核心代码 背景 在最近的一个项目中,有个需求是实现json编辑和提交.在我的实现中,使用了在textarea编辑,然后在无序列表中显示json格式化 ...

  10. JSON 格式化和校验工具

    简介 因为 JSON 数据相对于 XML 更加轻便同时也便于阅读.因此,在http请求.应用配置中使用十分广泛.而在JSON 数据的处理通常涉及到如下几点: JSON 的格式化处理,便于人类阅读: J ...

最新文章

  1. FPGA中状态机实现需要注意的地方
  2. 030_Message消息提示
  3. 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
  4. inline-block的兼容性问题
  5. Ubuntu 16.04 LTS apt-get connect refuse Unable to connect to 127.0.0.1:1080
  6. Subversion 错误信息一览表
  7. √GMAP.NET 地图
  8. Java中对数组的排序方法总汇分析
  9. Java面试之谈谈对CAS的理解
  10. library的英语怎么读音_如何让你的英语口音无限接近母语者?英语语音语调的独家训练方法...
  11. java输出回文数原代码_C++编程入门:判断回文数
  12. powershell文章汇总
  13. 【codecombat】 试玩全攻略 第十六关 近战
  14. HCIE-OSPFV3
  15. Ubuntu 下J2EE开发环境搭建
  16. UVA 10602 - Editor Nottoobad
  17. java连接ftp服务器
  18. java五子棋人机对战_java swing人机对战五子棋
  19. win11下电脑开热点,手机连接时显示无IP分配
  20. 《微SaaS创富周刊》第4期:2023年50+个微SaaS创业思路、时间管理APP 为我创收60万美元

热门文章

  1. (免费配音软件)[配音助手 更新] (1.3版本) 阿里云配音软件
  2. matlab产生窄带信号,窄带信号
  3. 【Python蒙特卡罗算法】
  4. 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第 几号的那位。
  5. 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。(java)
  6. 测试串口和串口线是否正常, 能否正常收发数据 !
  7. struts2与常用表格ajax操作的json传值问题
  8. 前馈神经网络——神经元
  9. iSCSI Target和Initiator安装与操作步骤详解
  10. 如何和下属谈心(转)