位置: 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工具大全)

  • 美柚怎么才能清除历史数据(美柚怎么清空所有记录)

    美柚怎么才能清除历史数据(美柚怎么清空所有记录)

  • 手机反应变慢是怎么回事(手机反应速度慢)

    手机反应变慢是怎么回事(手机反应速度慢)

  • 我们常说的2g3g4g手机的g指的是什么(我们常说的2g3g4g的g指的是什么)

    我们常说的2g3g4g手机的g指的是什么(我们常说的2g3g4g的g指的是什么)

  • 三星s10与note10的区别(三星s10+跟note10)

    三星s10与note10的区别(三星s10+跟note10)

  • 怎么设置qq封面背景(怎么设置qq封面动态)

    怎么设置qq封面背景(怎么设置qq封面动态)

  • iphonex运存怎么看(苹果x手机运行内存)

    iphonex运存怎么看(苹果x手机运行内存)

  • 抖音音乐版权限制是什么意思(抖音音乐权限问题)

    抖音音乐版权限制是什么意思(抖音音乐权限问题)

  • 微信查询名下实名账号显示异常(微信查询名下实名账号异常)

    微信查询名下实名账号显示异常(微信查询名下实名账号异常)

  • p40处理器是麒麟多少(p40pro麒麟芯片)

    p40处理器是麒麟多少(p40pro麒麟芯片)

  • 手机突然发出尖锐长鸣(手机突然发出尖锐长鸣然后自动关机)

    手机突然发出尖锐长鸣(手机突然发出尖锐长鸣然后自动关机)

  • 字符常量合法的条件(字符常量合法的条件c)

    字符常量合法的条件(字符常量合法的条件c)

  • 阿里充值平台怎么取消自动充值(阿里充值平台自动充值)

    阿里充值平台怎么取消自动充值(阿里充值平台自动充值)

  • 华为挖孔屏手机有哪几款(华为 挖孔)

    华为挖孔屏手机有哪几款(华为 挖孔)

  • airpods安卓怎么看电量(airpods安卓怎么设置双耳模式)

    airpods安卓怎么看电量(airpods安卓怎么设置双耳模式)

  • 为什么前置和后置不一样(为什么前置和后置拍照差别那么大)

    为什么前置和后置不一样(为什么前置和后置拍照差别那么大)

  • vsco注册后就要钱吗(vsco一定要注册才能用吗)

    vsco注册后就要钱吗(vsco一定要注册才能用吗)

  • 在国外可以用微信转账吗(在国外可以用微博吗)

    在国外可以用微信转账吗(在国外可以用微博吗)

  • dcs系统与plc具体区别(dcs控制和plc)

    dcs系统与plc具体区别(dcs控制和plc)

  • 荣耀v20怎么清除后台程序(荣耀v20怎么清除缓存)

    荣耀v20怎么清除后台程序(荣耀v20怎么清除缓存)

  • 淘宝卖家发漏会扣分吗(淘宝卖家漏发货赔偿标准)

    淘宝卖家发漏会扣分吗(淘宝卖家漏发货赔偿标准)

  • 作业帮怎么设置拍整页(作业帮怎么设置小窗口)

    作业帮怎么设置拍整页(作业帮怎么设置小窗口)

  • 拼多多场景推广怎么弄(拼多多场景推广没有曝光是怎么回事)

    拼多多场景推广怎么弄(拼多多场景推广没有曝光是怎么回事)

  • 淘宝助手如何用(淘宝助手如何用微信登录)

    淘宝助手如何用(淘宝助手如何用微信登录)

  • u盘洗衣机搅后还能用么(u盘洗衣机洗了)

    u盘洗衣机搅后还能用么(u盘洗衣机洗了)

  • 梨视频如何下载文件(梨视频缓存完的视频怎么导出)

    梨视频如何下载文件(梨视频缓存完的视频怎么导出)

  • 在Win7系统中,语言栏不见了怎么办?(在win7系统中文件属性有哪些)

    在Win7系统中,语言栏不见了怎么办?(在win7系统中文件属性有哪些)

  • sharedprem.exe - sharedprem是什么进程 有什么作用

    sharedprem.exe - sharedprem是什么进程 有什么作用

  • vue修改 el-input 输入框默认背景色(vue修改打包后静态资源路径的修改)

    vue修改 el-input 输入框默认背景色(vue修改打包后静态资源路径的修改)

  • phpcms二次开发是什么?(phpcms二次开发教程)

    phpcms二次开发是什么?(phpcms二次开发教程)

  • 企业税收主要分为哪几类
  • 个税申报数是按应发数还是实发数进行申报?
  • 税后净营业利润和净利润的区别
  • 城镇垃圾处理费的计税依据
  • 积分抵现是什么意思
  • 企业间贴现如何开票
  • 住宿费抵扣进项税怎么报税
  • 出口货物关税完税价格
  • 个税系统中累计怎么算
  • 以前年度费用调减
  • 管理费0.5%每年
  • 车辆购置附加税证丢了能过户吗
  • 收取物业费不开发票举报电话
  • 印花税没有计提直接付了怎么做账
  • 多交增值税怎么调整
  • 支付刻制公司印章费
  • 有留抵税额可以享受加计抵减吗
  • 技术服务费收入怎么确认收入
  • 房地产建造运费怎么计算
  • 应交税金在贷方怎么调
  • 技术转让收入是指当事人履行
  • 退税勾选的发票账务处理
  • 减半征收政策
  • 建筑公司开劳务票税点是多少
  • 年末利润分配会计处理
  • 农村合作社收到财政拨款怎么做分录
  • 红字发票记账如何记账
  • 双系统跳过磁盘检测
  • mac怎么把文件发给别人
  • macos使用技巧
  • 华硕win10笔记本如何恢复出厂设置
  • 自产产品用于业务招待,成本10万,售价20万
  • 购入专利权的会计科目
  • 企业在建工程领用自产的应税消费品
  • 开发商延期交房违法吗
  • 财务费用为什么是负数表示
  • 塔河流域
  • 税金及附加在哪里申报
  • 谁能代替你啊
  • 周志华《机器学习》第三章课后习题
  • 预缴增值税需要预缴城建税吗
  • 公司注册资金多好还是少好
  • 去年未分配利润为负什么意思
  • 退回发票金额是什么意思
  • 宝塔怎么搭建
  • 不符合无形资产摊销条件
  • 企业所得税里面的利润总额怎么算
  • 三项经费要包括哪三项
  • 小规模季度交税分录怎么做
  • 投资性房地产成本模式转公允模式差额
  • 哪些发票是成品发票
  • sql server查询
  • 销售额大于营业收入吗
  • 话费报销属于什么费用
  • 固定资产折旧方法的选择
  • 什么时候确认应收
  • 车间成本核算表
  • 暂估怎么冲回
  • 代办营业执照安全可靠吗
  • 账本页面设置
  • 怎么提升命令提示符
  • macbookpro 钥匙串
  • 注册表c盘桌面路径改为d盘
  • 怎么把ubuntu装在u盘上
  • explore是什么进程
  • proflwiz.exe - proflwiz是什么进程 有什么用
  • windows8鼠标没反应怎么办
  • win10无法升级系统
  • js类继承的几种方式
  • android内核剖析代码
  • JS中setTimeout的巧妙用法前端函数节流
  • javascript不严谨
  • 反序存放字符串
  • python 异常捕获
  • unity资源库
  • js函数详解
  • 骞怎么读什么意思是什么
  • jQuery EasyUI API 中文帮助文档和扩展实例
  • 技术咨询服务费税率
  • 上饶市税务局咨询电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设