位置: IT常识 - 正文

Java利用fastjson解析复杂嵌套json字符串、json数组;json字符串转Java对象,json数组转list数组(fastjson 解析)

编辑:rootadmin
Java利用fastjson解析复杂嵌套json字符串、json数组;json字符串转Java对象,json数组转list数组 文章目录前言一、什么是JSON对象?二、什么是json字符串?二、什么是JSON数组?三、复杂、嵌套的json字符串四、json字符串转换4.1 简单json字符串转换为java对象4.2 简单json字符串数组转换为list数组4.3 复杂嵌套json字符串数组转换为Java对象、list数组4.3.1 示例14.3.2 示例2总结前言

推荐整理分享Java利用fastjson解析复杂嵌套json字符串、json数组;json字符串转Java对象,json数组转list数组(fastjson 解析),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:java fastjson解析json字符串,fastjson 解析,fastjson write javabean error,fastjson解析json,java fastjson解析json字符串,fastjson write javabean error,fastjson解析json,fastjson解析json,内容如对您有帮助,希望把文章链接给更多的朋友!

在开发中经常需要将json字符串转换为java对象或者list数组,这样方便我们来使用这些数据,下面就来介绍一下怎样将json字符串和json数组转换为Java对象或者list数组。

本次使用阿里巴巴的fastjson来解析json字符串,需要添加依赖:

<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.8</version> </dependency>一、什么是JSON对象?

在大括号 {…} 中书写,包含多个 key/value(键/值)对,key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null) 例如一个最简单的没有嵌套的JSON对象: { “name”:“Sun”, “age”:18, “site”:null }

二、什么是json字符串?

书写格式和JSON对象一样,不过类型属于String,不能直接操作其中的各个属性,需要对其进行转换。在很多前后端交互传值之类的,都以json字符串的形式进行传递。,所以对json字符串进行转换非常有必要。

二、什么是JSON数组?

JSON 数组在中括号中书写,JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。 简单的JSON数组: [ “Google”, “Runoob”, “Taobao” ]

三、复杂、嵌套的json字符串

复杂的是json字符串里面嵌套json数组,这也是转换的重点,例如: { “student”: [ { “name”: “Tom”, “Grade”: 1, “age”: 11, “gender”: “M” }, { “name”: “Jerry”, “Grade”: 1, “age”: 10, “gender”: “M” } ], “classroom”: { “class1”: “room1”, “class2”: “room2” } }

在这里推荐几个比较好用的json字符串校验和格式化的网站: 链接: http://www.kjson.com/ 链接: https://www.bejson.com/

四、json字符串转换4.1 简单json字符串转换为java对象Java利用fastjson解析复杂嵌套json字符串、json数组;json字符串转Java对象,json数组转list数组(fastjson 解析)

转换语句:

//方法1 将json字符串转换为java对象Student student =JSON.parseObject(jsonStr,Student .class);//方法2 先将json字符串转换成JSONObject对象JSONObject jsonObject1 = new JSONObject(JSON.parseObject(jsonStr));//将转换后的JSONObject对象转换成Student对象Student student1 = (Student) JSONObject.toJavaObject(jsonObject1,Student.class);

示例:解析如下json字符串 { “name”: “Tom”, “Grade”: 1, “age”: 11, “gender”: “M” }

首先创建一个对应的对象:public class Student { private String name; private int grade; private int age; private String gender; //省略get、set方法} public void testJson(){ String jsonStr = "{\n" + " \"name\": \"Tom\", \n" + " \"Grade\": 1, \n" + " \"age\": 11, \n" + " \"gender\": \"M\"\n" + " }"; JSONObject jsonObject = new JSONObject(JSON.parseObject(jsonStr)); System.out.println("jsonObject:"+jsonObject); System.out.println("name:"+jsonObject.get("name")); System.out.println("Grade:"+jsonObject.get("Grade")); System.out.println("age:"+jsonObject.get("age")); //方法1 将json字符串转换为java对象 Student student =JSON.parseObject(jsonStr,Student .class); System.out.println("student:"+student); //方法2 先将json字符串转换成JSONObject对象 JSONObject jsonObject1 = new JSONObject(JSON.parseObject(jsonStr)); //将转换后的JSONObject对象转换成Student对象 Student student1 = (Student) JSONObject.toJavaObject(jsonObject1,Student.class); System.out.println("student1:"+student1); //转换为java对象之后可以利用对象的get方法来取值 System.out.println("age:"+student.getAge()); }

执行结果:

4.2 简单json字符串数组转换为list数组

使用语句:

List<Student> studentList = JSONObject.parseArray(jsonStr, Student.class);

示例:

[ { “name”: “Tom”, “Grade”: 1, “age”: 11, “gender”: “M” }, { “name”: “Jerry”, “Grade”: 1, “age”: 10, “gender”: “M” } ]

首先创建一个对应的java对象:

public class Student { private String name; private int grade; private int age; private String gender; //省略get、set方法} public void testJson(){ String jsonStr = "[\n" + " {\n" + " \"name\": \"Tom\", \n" + " \"Grade\": 1, \n" + " \"age\": 11, \n" + " \"gender\": \"M\"\n" + " }, \n" + " {\n" + " \"name\": \"Jerry\", \n" + " \"Grade\": 1, \n" + " \"age\": 10, \n" + " \"gender\": \"M\"\n" + " }\n" + "]"; List<Student> studentList = JSONObject.parseArray(jsonStr, Student.class); System.out.println("studentList:"+studentList); for (int i = 0; i < studentList.size(); i++) { System.out.println("name:"+studentList.get(i).getName()); System.out.println("Grade:"+studentList.get(i).getGender()); System.out.println("age:"+studentList.get(i).getAge()); } }

运行结果:

4.3 复杂嵌套json字符串数组转换为Java对象、list数组4.3.1 示例1

使用语句: 为4.1和4.2的嵌套使用

示例: { “student”: [ { “name”: “Tom”, “Grade”: 1, “age”: 11, “gender”: “M” }, { “name”: “Jerry”, “Grade”: 1, “age”: 10, “gender”: “M” } ], “classroom”: { “class1”: “fifth floor”, “class2”: “seventh floor” } }

首先创建对应的java对象,上面的Student对象可以重复使用,这里需要再添加两个对象,一个整体的包含Student和Classroom的对象School ,一个Classroom对象:

public class School {//这里的Student和Classroom
本文链接地址:https://www.jiuchutong.com/zhishi/295303.html 转载请保留说明!

上一篇:css 100vw、100vh出现滚动条怎么解决

下一篇:AI 工具大全(AI工具大全)

  • 房产税的计税基础包括契税吗
  • 员工借款业务流程
  • 小规模企业税务登记流程
  • 其他应收和其他应付怎么调账
  • 公积金缴存基数多久调整一次
  • 建筑企业收到招聘短信
  • 利润表季报本月金额是本季度余额吗
  • 无形资产有合同约定,怎么摊销?
  • 无形资产的摊销,可摊销的标准是什么?
  • 印花税的征税对象包括
  • 外经证预缴附加税
  • 个体户生产经营所得税税率表
  • 商品混凝土增值税政策
  • 小微企业需要开公户吗
  • 法院拍卖破产企业房产,税费问题
  • 员工个人所得税申报方式选哪个
  • 去年盈利今年亏损怎么表达
  • 企业购进固定资产进项税如何抵扣
  • 建筑服务工程款会计分录
  • 公司为职工购买社保只购买三险可以吗
  • 银票贴现需要发票嘛
  • 员工两处取得工资收入
  • 个人转让股权的合理费用都有哪些
  • 实收资本的账务处理例题
  • 模具是可以长期待摊吗
  • 车间的制造费用包括哪些
  • qbdagent2002.exe - qbdagent2002是什么进程 有什么用
  • 开始菜单中的磁贴是什么
  • 出口退税转内销的话如何算发票金额
  • 公司连续几年不向股东分配利润
  • 防伪税控风险纳税人
  • 对于个体工商户不需要满足累计经营三个月以上的条件
  • php生成xml文件
  • 私企股权转让程序
  • Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
  • 完美解决在ThinkPHP控制器中命名空间的问题
  • php数组排列组合
  • 一天撸一个财务APP系统【安卓端+前端+后端】
  • tensorflow卷积神经网络
  • 苗木增值税税率
  • python初学笔记
  • 利润表期初余额怎么填
  • 核定征收的收入
  • 二房东开票需要哪些资料
  • 建筑业差额纳税申报
  • 个人所得税房屋贷款扣除比例怎么选
  • sql服务无法启动 3417
  • 待报解啥意思
  • 增值税发票联次及其作用
  • 增值税留抵退税的账务处理
  • 员工报销的差旅费会计分录
  • 向非关联企业捐赠现金会计分录
  • 待抵扣进项税额和进项税额的区别
  • 行政事业单位支出范围和标准
  • 利润表里公允价值变动损益怎么算
  • 预计负债计入哪里
  • 在mysql中使用视图的限制
  • sql注入式攻击中单引号的作用
  • 在mac外置硬盘上安装软件
  • centos7如何修改用户名
  • freebsd怎么安装软件
  • 电脑怎么装双系统win10和linux
  • win8资源管理器在哪
  • windows7怎么关不了机怎么办
  • unity3d第三人称角色控制器
  • glCopyBufferSubData
  • 常用的批处理命令
  • unet遥感图像分割
  • nodejs mocha
  • jquery.css
  • linux系统如何搜索文件内容
  • jquery版本过低
  • 安卓打造世界中文全dlc
  • java script入门
  • 广东省电子税务局登录方式
  • 税务举报被泄漏怎么办
  • 成都市个人房屋出租税费
  • 五险一金和公积金冲突吗
  • 招投标法实施条例是哪一年修正的
  • 增值税率下降
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设