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

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;
}

image-20230403171538032

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);

image-20230403172132984

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);

image-20230403172608170

三、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);

image-20230403173718274

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);

image-20230403174042963

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);

image-20230403175356986

相关文章:

FastJson——JSO字符串与对象的相互转化

一、FastJson介绍 ​ Fastjson是阿里巴巴的开源SON解析库它可以解析JSON格式的字符串&#xff0c;支持将java Bean序列化为ISON字符串&#xff0c;也可以从JSON字符串反序列化到JavaBean。 Fastjson的优点 速度快 fastjson相对其他JSON库的特点是快&#xff0c;从2011年fastj…...

《程序员面试金典(第6版)》面试题 08.08. 有重复字符串的排列组合(回溯算法,全排列问题)C++

题目描述 有重复字符串的排列组合。编写一种方法&#xff0c;计算某字符串的所有排列组合。 示例1: 输入&#xff1a;S “qqe” 输出&#xff1a;[“eqq”,“qeq”,“qqe”] 示例2: 输入&#xff1a;S “ab” 输出&#xff1a;[“ab”, “ba”] 提示: 字符都是英文字母。…...

k8s API限流——server级别整体限流和客户端限流

1. 背景 为了防止突发流量影响apiserver可用性&#xff0c;k8s支持多种限流配置&#xff0c;包括&#xff1a; MaxInFlightLimit&#xff0c;server级别整体限流Client限流EventRateLimit, 限制eventAPF&#xff0c;更细力度的限制配置 1.1 MaxInFlightLimit限流 apiserver…...

在华为做了三年软件测试被裁了,我该怎么办

近年来&#xff0c;随着经济环境的变化和企业战略的调整&#xff0c;员工被裁员的情况变得越来越普遍。无论是因为企业经营困难还是因为业务调整&#xff0c;员工们都可能面临被裁员的风险。如果你也遇到了这样的情况&#xff0c;那么你应该怎么办呢&#xff1f; 首先&#xf…...

Spring cloud 限流的多种方式

在频繁的网络请求时&#xff0c;服务有时候也会受到很大的压力&#xff0c;尤其是那种网络攻击&#xff0c;非法的。这样的情形有时候需要作一些限制。本文主要介绍了两种限流方法&#xff0c;感兴趣的可以了解一下 目录 一、实战基于 Spring cloud Gateway 的限流 二、基于阿…...

Linux命令·top

top命令是Linux下常用的性能分析工具&#xff0c;能够实时显示系统中各个进程的资源占用状况&#xff0c;类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止…...

springmvc之系列文章

springmvc之编程步骤 springmvc初始化过程 用WebServlet和WebFilter干掉web.xml 没有web.xml怎么写web程序 一次GET请求在springmvc中是的处理流程 springMVC的handler都有哪些类型 springmvc主要组件简单介绍 springmvc 的Servlet WebApplicationContext springmvc 的…...

Matlab实现深度学习(附上完整仿真源码)

文章目录简单案例完整仿真代码下载简单案例 深度学习是一种能够自动学习和提取数据特征的机器学习方法&#xff0c;它已经在图像识别、语音识别、自然语言处理等领域取得了显著的成果。而Matlab作为一个强大的数学计算工具&#xff0c;也提供了丰富的深度学习工具箱&#xff0…...

我的谷歌书签

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 数据库技术考点汇总

一、重点知识点 基本概念&#xff1a;三级模式-两级映像、数据库设计数据库模型&#xff1a;E-R模型、关系模型、关系代数&#xff08;结合SQL语言&#xff09;规范化&#xff1a;函数依赖、健与约束、范式、模式分解事务并发&#xff1a;并发三种问题、三级封锁协议数据库新技…...

学剪辑难吗 如何使用会声会影2023做剪辑视频

很多剪辑初学者都问过一个问题&#xff0c;学剪辑难吗&#xff1f;其实不论学什么&#xff0c;只要用心学都不难&#xff0c;今天我们就来讲讲如何学做剪辑视频&#xff0c;感兴趣的小伙伴们不要走开&#xff01;一、学剪辑难吗 其实学剪辑并不是件难事&#xff0c;但是需要掌握…...

django学习日记

1、虚拟环境 virtualenv "加虚拟环境名字" 在当前目录下创建一个虚拟环境 进入虚拟环境执行activate进入该虚拟环境&#xff0c;再执行deactivate退出虚拟环境 安装一个包来管理虚拟环境&#xff0c;每次创建虚拟环境都放到同一位置&#xff0c;以及在任意位置都可…...

在线教学视频课程如何防止学员挂机?

阿酷TONY / 2023-3-31 / 长沙 / 原创 / 要不&#xff1f;交个朋友吧&#xff1f; 在线教学视频课程如何防止学员挂机&#xff1f;siri:这是个有意思的问题哈~~~在线教育、在线企业培训机构通常是如何处理的呢&#xff1f; 答&#xff1a;在视频播放过程中&#xff0c;弹出问题…...

【Redis】安装配置

文章目录Redis简介Redis版本迭代Redis安装配置官网地址操作系统环境基础查看本地redis版本修改配置文件docker容器安装redis测试linux版Redis简介 简介 与传统数据库关系(mysql)&#xff0c;Redis是key-value数据库(NoSQL一种)&#xff0c;mysql是关系数据库。Redis数据操作主要…...

ChatGPT批量生成文章-ChatGPT文章生成器

ChatGPT&#xff1a;一键批量生成高质量文章&#xff0c;提高生产效率&#xff01; 随着信息爆炸的时代&#xff0c;文本生产成为了各个行业必不可少的一部分。但面对高强度的生产需求&#xff0c;人力资源却难以跟上步伐。现在&#xff0c;我们有一款基于人工智能和自然语言处…...

Linux命令 ——sed

介绍 sed 是一种流式文本编辑器&#xff0c;常用于在 Unix 和类 Unix 系统中对文本进行处理。它可以将文本从标准输入或文件中读取&#xff0c;对其进行修改&#xff0c;然后将修改后的文本输出到标准输出或文件中。sed 是 “stream editor” 的缩写。 语法 sed 的基本语法为…...

C++常用字符串string方法

文章目录字符串string操作方法1. 类方法使用示例2. 头文件cstring方法使用示例字符串string操作方法 1. 类方法 在C中&#xff0c;引入string.h头文件可以使用C语言中的字符串操作函数。然而&#xff0c;C提供了一个更加方便的字符串类string&#xff0c;不需要引入string.h头…...

XML树结构和语法

文章目录一、XML 树结构二、XML 语法规则总结一、XML 树结构 XML 树结构 XML 文档形成了一种树结构&#xff0c;它从"根部"开始&#xff0c;然后扩展到"枝叶"。 一个 XML 文档实例 XML 文档使用简单的具有自我描述性的语法&#xff1a; <?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…...

句柄和指针的区别

句柄和指针都是一种数据结构&#xff0c;都常用于访问内存&#xff0c;下面介绍他们的一些不同点。 1 数据结构类型不同 指针的数据类型是无符号整数&#xff0c;占用4或8个字节&#xff08;在32位和64位系统中&#xff09;&#xff0c;它就像一个变量一样&#xff0c;这个变量…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...