当前位置: 首页 > article >正文

一个类就创建Json反序列化所需的属性

平时我们开发的时候总是会有对接其他系统的需求,其他系统返回的Json并不总是简单的

{“k1”:“v1”,“k2”:“v2”}

这种类型,有可能里面包含的数据比较杂,会出现多层嵌套呀,数组的值这种情况,我们反序列化的时候用Map当然也是可以处理的,就是比较麻烦,得一直去找,所以一般会创建一个类接收,但是遇到Json嵌套的比较多的时候并且里面的k和v属性也比较多的时候额外创建其他类又太麻烦,这种情况下我们可以使用Java的静态内部类去处理,如下

JSON

{“username”:“k1”,“password”:“123”,“labels”:[{“label”:“l1”},{“label”:“l2”}]}

在这里插入图片描述
例如一个JSON现在是这种两层嵌套的,labels里面是一个数组

Java

对应的Java类可以这样定义,使用内部类Inner定义JSON里的label,外部类呢就使用List接收Inner即可,这里最好使用静态内部类。因为当内部类为非static的时候,要创建该内部类必须持有对应的外部类实例才可创建(当然优势是可以访问这个外部类),但是静态内部类创建的时候则不需要有外部类的实例,可以随意创建。
在JSON反序列化的上下文中,我们通常期望的是从JSON数据直接创建对象的实例,而不依赖于任何现有的对象实例。因此,静态内部类更适合这种情况,因为它们不依赖于外部类的实例,可以独立存在。
这样即可定义比较复杂的JSON而不需要定义许多的类文件(一个类+内部类即可完成)

@Data
public class Outer {
    private String username;
    private String password;
    private List<Inner> labels;

    @Data
    public static class Inner{
        private String label;
    }
}

实际运行如图
在这里插入图片描述


http://www.kler.cn/a/447993.html

相关文章:

  • Obfuscator使用心得
  • 数智化医院分布式计算框架融合人工智能方向初步实现与能力转换浅析
  • Java实现贪吃蛇游戏
  • 全志H618 Android12修改doucmentsui选中图片资源详情信息
  • 西游记战力排名、笔记等
  • 常用Python自动化测试框架有哪些?
  • golang,gowork工具
  • UI自动化概念+Web自动化测试框架
  • 第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
  • CE之植物大战僵尸植物无冷却
  • 60.基于SSM的个人网站的设计与实现(项目 + 论文)
  • HarmonyOS NEXT 技术实践-基于意图框架服务实现智能分发
  • simulink离散传递函数得到差分方程并用C语言实现
  • 二叉树_堆
  • 实验二 组合逻辑电路部件实验
  • 青少年编程与数学 02-004 Go语言Web编程 07课题、WebSockets
  • 【java 正则表达式 笔记】
  • 机器学习零基础小白指南---- 线性代数入门
  • 生态学研究中,森林生态系统的结构、功能与稳定性是核心研究
  • Go语言中context 结构原理, 使用场景和用途
  • kotlin中泛型中in和out的区别
  • 使用qemu搭建armv7嵌入式开发环境
  • word文档中有大量空白行删除不掉,怎么办?
  • E46.【C语言】练习:面试题:循环多少次?
  • 探秘 Go 语言赋值表达式的奇妙之旅
  • 类型注解:基本类型