万能的json格式化

万能的json格式化我们在代码开发的时候 经常会遇到一些 json 格式化问题 比如说下面俩种 code 200 success true data name 张三 age 22 gender 男 name 李四 age 19 gender 女 name 王五 a

我们在代码开发的时候,经常会遇到一些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); 

第二层封装对象

/ * 数据传输的第二层封装(可选择的) * * @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); 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228559.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午6:44
下一篇 2026年3月16日 下午6:45


相关推荐

  • js获取当前日期时间「建议收藏」

    js获取当前日期时间「建议收藏」functionThistime(){//当前日期vardate=newDate();varyear=date.getFullYear();varmonth=date.getMonth()+1;varday=date.getDate();varmytime=date.toLocaleTimeString();//获取当前时间//myDate.toLocaleString()

    2025年7月11日
    6
  • 高速电平转换芯片_电平转换电路分压

    高速电平转换芯片_电平转换电路分压现在很多SOC器件为了降低功耗,都把IO口的电平设计成了1.8V,核电压0.85V,当这种SOC做主平台时,在做接口设计需要格外关注电平的匹配。单板中经常需要将1.8V的电平转换成3.3V或者转成5V。如果没有注意到输入和输出信号之间的电平匹配,系统就无法正常工作。这篇文章主要从两个简单的案例入手,分析电平转换电路需要注意的一些问题,以及在此类芯片数据手册中几个重要参数的解读,对开发人员来说,掌握这些器件的参数是器件选型必须关注的点。三极管做电平转换以常见的三极管做1.8V转3.3V为案例。电路图

    2022年8月10日
    13
  • pycharm修改镜像源方法

    pycharm修改镜像源方法由于国外的镜像源安装 Python 速度较慢 选择国内的镜像速度较快 这篇文章如要讲述如何设置国内镜像源 常用镜像源 清华 https pypi tuna tsinghua edu cn simple 阿里云 http mirrors aliyun com pypi simple 中国科技大学 https pypi mirrors ustc edu cn simple 方法一

    2026年3月18日
    2
  • FEC编码_无线电FEC

    FEC编码_无线电FECFEC编码:ES流:也叫基本码流,包含视频、音频或数据的连续码流.PES流:也叫打包的基本码流,是将基本码流ES流根据需要分成长度不等的数据包,并加上包头就形成了打包的基本码流PES流.TS流:也叫传输流,是由固定长度为188字节的包组成,含有独立时基的一个或多个节目,适用于误码较多的环境.在DVB-S标准中,只规定了1/2、2/3、3/4、5/6、7/8这5种FEC码率,为什么只规定这5…

    2022年8月11日
    6
  • Elasticsearch面试题精选20题[通俗易懂]

    Elasticsearch面试题精选20题[通俗易懂]题目均来源于网络,为个人学习标注并纠错后发布。目录1.ES为什么那么快(ES的索引原理)?Elasticsearch查询速度为什么这么快?2.MongoDB和Elasticsearch区别3.ES的倒排索引是什么?4.Elasticsearch索引数据多了怎么办,如何调优,部署?5.说你们公司ES的集群架构,索引数据大小,分片有多少,以及一些调优手段。6.Elasticsearch是如何实现master选举的?7.详细描述一下Elasticsearch索引文档的过程。

    2025年11月7日
    6
  • linux查看ip命令

    linux查看ip命令参考文章 https www linuxidc com Linux 2017 10 147449 htm 摘要 1 ifconfig 查看 ip2 vi 编辑 etc sysconfig network scripts 下的配置文件 设置动态分配 IP 有效一 查看 ip 命令 ifconfig ipadd 命令也行 推荐使用这个命令 如果没有红框中的 inet 图一查看 ip 则需要编辑网络脚本 1 进入 network scripts 目录 路径通常为 cd etc sysconfig ne

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号