网站首页 > java教程 正文
有关Json
Json作为一种轻量级的交换数据形式,由于其自身的一些优良特性比如包含有效信息多,易于阅读和解析而广受码农以及架构的喜爱。使用Json的场景也很多,比如读取解析系列化的Json格式的数据,我们需要将一个Json的字符串解析成我们想要的对象或者提取我们需要的信息。
稍稍接触Json数据解析的应该都会比较熟悉通过一些工具库比如fastjson或者gons转换为我们想要的对象。举例将如下的字符串解析为一个Person对象。
这时候我们需要声明一个与此Json能够映射的对象,好比这样
这是解析Json数据的一种比较繁琐的方式,这种方式有时候是必不可少的,因为我们不仅要解析json数据,同时还需要用到解析后的对象做后续的业务处理。
但是,有时候我们根本用不上这个对象,只想提取出需要的信息,比如插入到数据库,或者提取出一个字段作为一个判定标识。这时候,我们可以通过如下介绍的方式来实现即可,不需要通过新建对象的方式。
下面主要介绍两种方式,分别是通过fastjson和gson的方式实现。
通过FastJson实现
FastJson是阿里巴巴发布的一个Json处理工具包,其特点就是解析快,效率高,而且支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省等。下面我们看看借助FastJson我们如何提取出我们想要的信息
通过静态方法parse,将字符串解析为一个Object对象
将返回的jsonObj强转为一个Map集合
在map集合中获取需要的信息,比如提取出field1对应的value1
解析出来的Object对象其实就是一个map集合,这里的filed1就是map中的key,value1就是map集合中的value
对于像fieldContext本身就是一个嵌套的map集合,我们可以从fieldContext的值中再解析拆为map集合
显然,我们成功的获取到了想要提取的字段信息,同时也没有新建与json对应的对象。
通过Gson实现
GSON是Google开发的Java API,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。
相比较于FastJson,在实现我们前面提到的提取信息的实现细节上会有一些不同。
创建一个Gson对象
调用Gson的fromJson方法将字符串直接解析成HashMap类型,这一点要比FastJson来的更加快捷
后面的用法与使用FastJson解析数据一致,也是从Map中提取对应字段的值
最终得到的结果如下
以上主要是针对如何快速从Json字符串中提取需要信息的场景给出的解决思路,分别就当前流行的FastJson和Gson给出示例代码,后面有机会再详细说说有关解析Json的具体实例和细节。
猜你喜欢
- 2024-10-10 简单的对象转换方法类分享(对象转化为字符串的几种方式)
- 2024-10-10 为什么 JSON 不适合作为配置语言?
- 2024-10-10 JSON 对象的这些操作和使用场景你知道多少?
- 2024-10-10 第27天|Java入门有野,json操作(java的json解析几种方法)
- 2024-10-10 如何使用springmvc返回json格式的数据?
- 2024-10-10 springboot从小白到大神-007处理Json数据进阶
- 2024-10-10 Fastjson2如何进行JSON的解析和对象序列化?
- 2024-10-10 Java笔试题目分享(2)知识点总结——Json对象
- 2024-10-10 面试官问,你知道http请求怎么在你的项目中变成Java对象吗?
- 2024-10-10 Spring Boot 中使用FastJSON来替换默认的JSON数据序列方式?
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)