FastJson——JSO字符串与对象的相互转化
一、FastJson介绍
Fastjson是阿里巴巴的开源SON解析库它可以解析JSON格式的字符串,支持将java Bean序列化为ISON字符串,也可以从JSON字符串反序列化到JavaBean。
Fastjson的优点
-
速度快
fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.版本之后其性能从未被其他ava实现的]SON库超越 -
使用广泛
fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一 -
测试完备
fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定 -
使用简单
fastison的API十分简洁 -
功能完备
支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展
二、FastJson序列化 API
序列化: 将Java对象转换成JSON格式字符串的过程。
2.1 JSON对象转换成字符串
使用 JSON.toJSONString(Object object); 方法
public class ObjectToJSON {public static void main(String[] args) {Student student = new Student("张三",20,"北京市","zhangjinfqi@qq.com");String jsonString = JSON.toJSONString(student);System.out.println(jsonString);}
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {private String name;private Integer age;private String address;private String email;
}

2.2 List集合转换成JSON对象
使用 JSON.toJSONString(Object object); 方法
Student student1 = new Student("张三",20,"北京市","zhangjinfqi@qq.com");
Student student2 = new Student("张三",20,"北京市","zhangjinfqi@qq.com");
Student student3 = new Student("张三",20,"北京市","zhangjinfqi@qq.com");
Student student4 = new Student("张三",20,"北京市","zhangjinfqi@qq.com");ArrayList<Student> list = new ArrayList<>();
list.add(student1);
list.add(student2);
list.add(student3);
list.add(student4);
String jsonString = JSON.toJSONString(list);
System.out.println(jsonString);

2.3 Map集合转换成JSON对象
Map<String, Student> map = new HashMap<>();
Student student1 = new Student("张三", 20, "北京市", "zhangjinfqi@qq.com");
Student student2 = new Student("张三", 20, "北京市", "zhangjinfqi@qq.com");
Student student3 = new Student("张三", 20, "北京市", "zhangjinfqi@qq.com");
Student student4 = new Student("张三", 20, "北京市", "zhangjinfqi@qq.com");
map.put("1",student1);
map.put("2",student2);
map.put("3",student3);
map.put("4",student4);
String jsonString = JSON.toJSONString(map);
System.out.println(jsonString);

三、FastJSON反序列化
将JSON格式的字符串转换成Java对象
3.1 JSON字符串转Object对象
JSON.parseObject(JSON字符串, 要转换成的类.class);
String jsonString = "{\"address\":\"北京市\",\"age\":20,\"email\":\"zhangjinfqi@qq.com\",\"name\":\"张三\"}";
// 第一个参数传入JSON字符串,第二个参数传入我们要转换成的对象的类Student student = JSON.parseObject(jsonString, Student.class);System.out.println(student);

3.2 JSON字符串转List集合
JSON.parseArray(json格式字符串, 传递转换后的集合的泛型);
String jsonString = "[{\"address\":\"北京市\",\"age\":20,\"email\":\"zhangjinfqi@qq.com\",\"name\":\"张三\"},{\"address\":\"北京市\",\"age\":20,\"email\":\"zhangjinfqi@qq.com\",\"name\":\"张三\"},{\"address\":\"北京市\",\"age\":20,\"email\":\"zhangjinfqi@qq.com\",\"name\":\"张三\"},{\"address\":\"北京市\",\"age\":20,\"email\":\"zhangjinfqi@qq.com\",\"name\":\"张三\"}]";
// 第一个参数传递JSON格式字符串,第二个参数传递转换后的集合的泛型List<Student> studentsList = JSON.parseArray(jsonString, Student.class);System.out.println(studentsList);

3.3 JSON字符串转Map集合
String jsonString = "{\"1\":{\"address\":\"北京市\",\"age\":20,\"email\":\"zhangjinfqi@qq.com\",\"name\":\"张三\"},\"2\":{\"address\":\"北京市\",\"age\":20,\"email\":\"zhangjinfqi@qq.com\",\"name\":\"张三\"},\"3\":{\"address\":\"北京市\",\"age\":20,\"email\":\"zhangjinfqi@qq.com\",\"name\":\"张三\"},\"4\":{\"address\":\"北京市\",\"age\":20,\"email\":\"zhangjinfqi@qq.com\",\"name\":\"张三\"}}";
// 直接进行反序列化,Map集合是没有泛型的,也是可以正常输出的,但是没有泛型的集合是不安全的集合
// Map map = JSON.parseObject(jsonString);// 下面掉用户parseObject,传递参数TypeReference类型,在TypeReference的泛型中传递转后的Map集合即可
// {}是什么意思? 因为TypeReference的构造方法是protected修饰的,只有子类才能调用,但是我们现在不是他的子类,在后面加{}让其在这成为匿名内部类,匿名内部类就是该类的子类对象Map<String, Student> map = JSON.parseObject(jsonString, new TypeReference<Map<String, Student>>() {});System.out.println(map);

相关文章:
FastJson——JSO字符串与对象的相互转化
一、FastJson介绍 Fastjson是阿里巴巴的开源SON解析库它可以解析JSON格式的字符串,支持将java Bean序列化为ISON字符串,也可以从JSON字符串反序列化到JavaBean。 Fastjson的优点 速度快 fastjson相对其他JSON库的特点是快,从2011年fastj…...
《程序员面试金典(第6版)》面试题 08.08. 有重复字符串的排列组合(回溯算法,全排列问题)C++
题目描述 有重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合。 示例1: 输入:S “qqe” 输出:[“eqq”,“qeq”,“qqe”] 示例2: 输入:S “ab” 输出:[“ab”, “ba”] 提示: 字符都是英文字母。…...
k8s API限流——server级别整体限流和客户端限流
1. 背景 为了防止突发流量影响apiserver可用性,k8s支持多种限流配置,包括: MaxInFlightLimit,server级别整体限流Client限流EventRateLimit, 限制eventAPF,更细力度的限制配置 1.1 MaxInFlightLimit限流 apiserver…...
在华为做了三年软件测试被裁了,我该怎么办
近年来,随着经济环境的变化和企业战略的调整,员工被裁员的情况变得越来越普遍。无论是因为企业经营困难还是因为业务调整,员工们都可能面临被裁员的风险。如果你也遇到了这样的情况,那么你应该怎么办呢? 首先…...
Spring cloud 限流的多种方式
在频繁的网络请求时,服务有时候也会受到很大的压力,尤其是那种网络攻击,非法的。这样的情形有时候需要作一些限制。本文主要介绍了两种限流方法,感兴趣的可以了解一下 目录 一、实战基于 Spring cloud Gateway 的限流 二、基于阿…...
Linux命令·top
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止…...
springmvc之系列文章
springmvc之编程步骤 springmvc初始化过程 用WebServlet和WebFilter干掉web.xml 没有web.xml怎么写web程序 一次GET请求在springmvc中是的处理流程 springMVC的handler都有哪些类型 springmvc主要组件简单介绍 springmvc 的Servlet WebApplicationContext springmvc 的…...
Matlab实现深度学习(附上完整仿真源码)
文章目录简单案例完整仿真代码下载简单案例 深度学习是一种能够自动学习和提取数据特征的机器学习方法,它已经在图像识别、语音识别、自然语言处理等领域取得了显著的成果。而Matlab作为一个强大的数学计算工具,也提供了丰富的深度学习工具箱࿰…...
我的谷歌书签
Form 表单 | Element Plusa Vue 3 based component library for designers and developershttps://element-plus.gitee.io/zh-CN/component/form.html#%E5%AF%B9%E9%BD%90%E6%96%B9%E5%BC%8F three.js exampleshttp://www.yanhuangxueyuan.com/threejs/examples/#software_geo…...
day3 数据库技术考点汇总
一、重点知识点 基本概念:三级模式-两级映像、数据库设计数据库模型:E-R模型、关系模型、关系代数(结合SQL语言)规范化:函数依赖、健与约束、范式、模式分解事务并发:并发三种问题、三级封锁协议数据库新技…...
学剪辑难吗 如何使用会声会影2023做剪辑视频
很多剪辑初学者都问过一个问题,学剪辑难吗?其实不论学什么,只要用心学都不难,今天我们就来讲讲如何学做剪辑视频,感兴趣的小伙伴们不要走开!一、学剪辑难吗 其实学剪辑并不是件难事,但是需要掌握…...
django学习日记
1、虚拟环境 virtualenv "加虚拟环境名字" 在当前目录下创建一个虚拟环境 进入虚拟环境执行activate进入该虚拟环境,再执行deactivate退出虚拟环境 安装一个包来管理虚拟环境,每次创建虚拟环境都放到同一位置,以及在任意位置都可…...
在线教学视频课程如何防止学员挂机?
阿酷TONY / 2023-3-31 / 长沙 / 原创 / 要不?交个朋友吧? 在线教学视频课程如何防止学员挂机?siri:这是个有意思的问题哈~~~在线教育、在线企业培训机构通常是如何处理的呢? 答:在视频播放过程中,弹出问题…...
【Redis】安装配置
文章目录Redis简介Redis版本迭代Redis安装配置官网地址操作系统环境基础查看本地redis版本修改配置文件docker容器安装redis测试linux版Redis简介 简介 与传统数据库关系(mysql),Redis是key-value数据库(NoSQL一种),mysql是关系数据库。Redis数据操作主要…...
ChatGPT批量生成文章-ChatGPT文章生成器
ChatGPT:一键批量生成高质量文章,提高生产效率! 随着信息爆炸的时代,文本生产成为了各个行业必不可少的一部分。但面对高强度的生产需求,人力资源却难以跟上步伐。现在,我们有一款基于人工智能和自然语言处…...
Linux命令 ——sed
介绍 sed 是一种流式文本编辑器,常用于在 Unix 和类 Unix 系统中对文本进行处理。它可以将文本从标准输入或文件中读取,对其进行修改,然后将修改后的文本输出到标准输出或文件中。sed 是 “stream editor” 的缩写。 语法 sed 的基本语法为…...
C++常用字符串string方法
文章目录字符串string操作方法1. 类方法使用示例2. 头文件cstring方法使用示例字符串string操作方法 1. 类方法 在C中,引入string.h头文件可以使用C语言中的字符串操作函数。然而,C提供了一个更加方便的字符串类string,不需要引入string.h头…...
XML树结构和语法
文章目录一、XML 树结构二、XML 语法规则总结一、XML 树结构 XML 树结构 XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。 一个 XML 文档实例 XML 文档使用简单的具有自我描述性的语法: <?xml vers…...
【Qt】Qt单元测试详解(四):Google Test 断言
1、创建测试工程 【Qt】Qt单元测试详解(一):通过QtCreator创建测试工程 2、添加测试代码 2.1 默认生成的代码 1)项目工程pro include(gtest_dependency.pri)TEMPLATE = app CONFIG += console c++14 CONFIG -= app_bundle CONFIG += thread CONFIG -= qtHEADERS += \t…...
句柄和指针的区别
句柄和指针都是一种数据结构,都常用于访问内存,下面介绍他们的一些不同点。 1 数据结构类型不同 指针的数据类型是无符号整数,占用4或8个字节(在32位和64位系统中),它就像一个变量一样,这个变量…...
移动端大语言模型本地部署:从模型轻量化到推理引擎实战
1. 项目概述:当GPT遇见移动端,一个开源项目的诞生最近在GitHub上闲逛,发现了一个挺有意思的项目,叫Taewan-P/gpt_mobile。光看名字,你大概就能猜到它的核心:把类似GPT这样的大语言模型(LLM&…...
NVIDIA Profile Inspector终极显卡优化工具:简单易用的性能调校完整指南
NVIDIA Profile Inspector终极显卡优化工具:简单易用的性能调校完整指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款专业的显卡优化工具,专为…...
终极罗技PUBG鼠标宏配置指南:5步告别压枪烦恼
终极罗技PUBG鼠标宏配置指南:5步告别压枪烦恼 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中疯狂上跳的枪口而…...
基于GitHub Pages与Jekyll的静态博客搭建与深度定制指南
1. 项目概述:一个静态博客的诞生与演进如果你对搭建个人博客感兴趣,或者正在寻找一个轻量、高效、完全可控的线上空间,那么“RyansGhost/RyansGhost.github.io”这个项目仓库,很可能就是你一直在寻找的答案。这不仅仅是一个托管在…...
从零构建大语言模型:Transformer架构、训练技巧与实战指南
1. 项目概述:从零构建你自己的大语言模型最近几年,大语言模型(LLM)的热度居高不下,从ChatGPT到Claude,再到国内外的各种开源模型,它们展现出的理解和生成能力让人惊叹。但你是否也和我一样&…...
别再只会Commit了!用Git Desktop搞定分支合并与冲突解决(附真实开发场景)
别再只会Commit了!用Git Desktop搞定分支合并与冲突解决(附真实开发场景) 当你第一次接触Git时,可能觉得它就是个"保存按钮"——每次改完代码就commit一下。但随着项目规模扩大,特别是多人协作时,…...
手把手带你激活Matlab2016b:Windows 64位系统下的完整许可配置指南
1. 准备工作:确保激活环境完整 在开始激活Matlab2016b之前,我们需要做好充分的准备工作。首先确认你已经按照官方流程完成了基础安装,并且安装目录下存在完整的文件结构。我遇到过不少朋友因为安装不完整导致后续激活失败的情况,所…...
【STC8H】GPIO模式深度解析:从准双向到推挽,如何精准控制外设
1. STC8H的GPIO模式全景解析 第一次接触STC8H的GPIO配置时,我被那个神秘的PxM0和PxM1寄存器搞得晕头转向。直到有一次调试I2C通讯失败,才发现是开漏模式配置错误。这次教训让我明白,理解GPIO的四种工作模式,就像掌握不同武器的使用…...
如何为深信服超融合平台上的应用快速接入大模型能力
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 如何为深信服超融合平台上的应用快速接入大模型能力 对于在深信服超融合平台上部署业务应用的企业开发团队而言,集成智…...
开源AI代码助手实践:从数据到部署的全链路解析
1. 项目概述:从“copaw-code”看AI代码助手的开源实践最近在GitHub上看到一个挺有意思的项目,叫“QSEEKING/copaw-code”。光看这个名字,可能有点摸不着头脑。“copaw”这个词,听起来像是“co-pilot”(副驾驶ÿ…...
