使用fastJSON进行json格式的转换

前言:JSON在传输数据时,起到了特别大的作用,本文是采用的是com.alibaba.fastjson第三方包完成json格式的转换

一、首先导入maven依赖:

        <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.19</version></dependency>

二、常用的一些方法

2.1 序列化

对象、集合序列化成json字符串

public static String toJSONString(Object object)

2.2 反序列化

json字符串反序列化成javabean对象或者类

public static <T> T parseObject(String text, Class<T> clazz)

json字符串反序列化成为List集合

public static <T> List<T> parseArray(String text, Class<T> clazz)

json字符串反序列化成为Map集合:

public static <T> T parseObject(String text, TypeReference<T> type, Feature... features)

三、Demo演示

package com.hssy.newcustomer;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.hssy.newcustomer.dto.fastjson.JsonDetailModule;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;@SpringBootTest
class NewcustomerApplicationTests {//测试Java对象进行json序列化成json字符串@Testvoid contextLoads() {JsonDetailModule module = new JsonDetailModule();module.setId(2);module.setName("张菲");List<String> hobbys = new ArrayList<>();hobbys.add("唱歌");hobbys.add("书法");hobbys.add("三国演绎");module.setHobby(hobbys);String jsonString = JSON.toJSONString(module);System.out.println(jsonString);
//        {"hobby":["唱歌","书法","三国演绎"],"id":2,"name":"张菲"}}//测试将List集合进行json序列化成json字符串@Testvoid testListToJson(){List<JsonDetailModule> list = new ArrayList<>();for (int i = 0; i < 2; i++) {JsonDetailModule module = new JsonDetailModule();module.setId(i);module.setName("用户:"+ i);List<String> hobbys = new ArrayList<>();hobbys.add("随机爱好:"+(char) (0x4e00 + (int) (Math.random() * (0x9fa5 - 0x4e00 + 1))));hobbys.add("随机爱好:"+(char) (0x4e00 + (int) (Math.random() * (0x9fa5 - 0x4e00 + 1))));module.setHobby(hobbys);list.add(module);}String jsonString = JSON.toJSONString(list);System.out.println(jsonString);//        [{"hobby":["随机爱好:武","随机爱好:畧"],"id":0,"name":"用户:0"},{"hobby":["随机爱好:穊","随机爱好:丠"],"id":1,"name":"用户:1"}]}@Testvoid testMapToJson(){HashMap<String, List<String>> map = new HashMap<>();List<String> hobbys = new ArrayList<>();hobbys.add("唱");hobbys.add("跳");hobbys.add("rap");hobbys.add("篮球");List<String> genders = new ArrayList<>();genders.add("男");genders.add("女");map.put("爱好",hobbys);map.put("性别",genders);String jsonString = JSON.toJSONString(map);System.out.println(jsonString);
//        {"爱好":["唱","跳","rap","篮球"],"性别":["男","女"]}}//测试json字符串反序列化成Java对象@Testvoid testJsonToJava(){String jsonString = "{\"hobby\":[\"唱歌\",\"书法\",\"三国演绎\"],\"id\":2,\"name\":\"张菲\"}";JsonDetailModule jsonDetialModule = JSON.parseObject(jsonString, JsonDetailModule.class);System.out.println(jsonDetialModule);  //JsonDetailModule(id=2, name=张菲, hobby=[唱歌, 书法, 三国演绎])}@Testvoid testJsonToList(){String jsonString = " [{\"hobby\":[\"随机爱好:武\",\"随机爱好:畧\"],\"id\":0,\"name\":\"用户:0\"},{\"hobby\":[\"随机爱好:穊\",\"随机爱好:丠\"],\"id\":1,\"name\":\"用户:1\"}]";List<JsonDetailModule> jsonDetailModules = JSON.parseArray(jsonString, JsonDetailModule.class);System.out.println(jsonDetailModules);
//        [JsonDetailModule(id=0, name=用户:0, hobby=[随机爱好:武, 随机爱好:畧]), JsonDetailModule(id=1, name=用户:1, hobby=[随机爱好:穊, 随机爱好:丠])]for (JsonDetailModule item : jsonDetailModules) {System.out.println(item);}
//            JsonDetailModule(id=0, name=用户:0, hobby=[随机爱好:武, 随机爱好:畧])
//            JsonDetailModule(id=1, name=用户:1, hobby=[随机爱好:穊, 随机爱好:丠])}@Testvoid testJsonToMap(){String jsonString ="{\"爱好\":[\"唱\",\"跳\",\"rap\",\"篮球\"],\"性别\":[\"男\",\"女\"]}";
//        JSONObject jsonObject = JSON.parseObject(jsonString);//使用JSON.parseObject(jsonString)直接进行反序列化是没有泛型的,没有泛型是不安全的集合//我们要求转后的集合必须有泛型//因此,调用parseObject方法,还必须多穿一个TypeReference类型的参数,TypeReference类的泛型中,传递转换后的Map集合Map<String, List<String>> map = JSON.parseObject(jsonString, new TypeReference<Map<String, List<String>>>(){});for (String key: map.keySet()) {System.out.println(key +":--:"+map.get(key));}
//        爱好:--:[唱, 跳, rap, 篮球]
//        性别:--:[男, 女]}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/17585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Github 2024-05-27 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-27统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目5TypeScript项目3HTML项目1Go项目1非开发语言项目1Rust项目1Svelte项目1Jupyter Notebook项目1免费编程书籍和学习资源清单 创建周期…

Xinstall:开启携带参数注册新时代,提升用户体验与运营效率

在移动互联网时代&#xff0c;App推广和运营面临着诸多挑战。其中&#xff0c;如何精准追踪用户来源、评估推广效果以及优化用户体验&#xff0c;一直是开发者们关注的焦点。而Xinstall作为一家一站式App全渠道统计服务商&#xff0c;通过其独特的携带参数注册功能&#xff0c;…

C语言布尔类型的前世今生

起初&#xff0c;C语言并没有布尔类型&#xff0c;都是使用int类型的变量来表示布尔值&#xff08;时至今日大家也基本都这样弄&#xff09;。_Bool是C99标准&#xff08;1999年的标准&#xff09;新增的数据类型&#xff0c;用于表示布尔值&#xff08;即逻辑值true和false&am…

solidworks 3D草图案例2-方块异形切

单位mm 单位mm 长方体 底面是48mm*48mm&#xff0c;高为60mm 3D草图 点击线&#xff0c;根据三视图&#xff0c;绘制角度线&#xff0c; 由于三点确定一个面&#xff0c;因此确定三点就可以了 基准面 点击参考几何体-基准面&#xff0c;依次点击3个点 曲面切除 完成后点击插…

TextFormField onSave 和onChange

背景&#xff1a;用户在注册发送验证码的时候&#xff0c;发现一直获取不了_username 原因&#xff1a;_username 用的是 TextFormField onSave 由于这个时候表单并未提交,未触发onSave事件&#xff0c;所以一直取不到_username的值。 submit() {var state this._formKey.cur…

POLARDB:新零售用户MySQL上云最佳选择

什么是云数据库POLARDB&#xff1f; POLARDB是阿里云自主研发的最新一代RDS关系型数据库&#xff0c;是特别针对互联网场景设计的Cloud-Native 云原生数据库。POLARDB for MySQL版本&#xff0c;在提供100%兼容MySQL5.6/8.0的关系型事务处理ACID特性之上&#xff0c;能够提供完…

记录集连接——kettle开发25

一、记录集连接 记录集连接就像数据库的左连接、右连接、内连接、外连接。 需要注意的是&#xff0c;因为我们是对数据流进行操作&#xff0c;因此我们在进行记录集连接操作前&#xff0c;需要先将数据进行排序。 新版的KETTLE&#xff0c;名字都改了&#xff0c;叫Merge joi…

# WIN10/WIN11 找不到【应用商店 Microsoft.WindowsStore】怎么办?

WIN10/WIN11 找不到【应用商店 Microsoft.WindowsStore】怎么办&#xff1f; 解决方法&#xff1a; 1、右键【开始】菜单&#xff0c;点击【Windows PowerShell (管理员)】&#xff0c;输入&#xff1a; Get-AppxPackage -allusers | Select Name, PackageFullName 2、查询…

输入与输出的魔法:探索Python的内置函数

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、从键盘捕获输入&#xff1a;input()函数的力量 二、打印输出&#xff1a;print()函数的…

R语言学习 - 箱线图一步法

箱线图 - 一步绘制 绘图时通常会碰到两个头疼的问题&#xff1a; 1、有时需要绘制很多的图&#xff0c;唯一的不同就是输入文件&#xff0c;其它都不需要修改。如果用R脚本&#xff0c;需要反复替换文件名&#xff0c;繁琐又容易出错。 (R也有命令行参数&#xff0c;不熟&…

Python爬虫编写指南

一、确定目标 在开始编写爬虫之前&#xff0c;你需要明确你的目标。你想要从哪个网站抓取数据&#xff1f;你想要获取哪些信息&#xff1f;这些信息通常通过查看网站的HTML结构来确定。 二、选择工具 Python是一个强大的编程语言&#xff0c;有许多库可以帮助你编写爬虫&…

yudao 文件分片上传

FileController GetMapping("/file-url")Operation(summary "获取文件地址")ApiResponse(description "0文件不存在")OperateLog(enable false)public CommonResult<String> getFileUrl(String identifier) {String url0 fileService.…

大模型实战-动手实现单agent

文章目录 入口cli_main.py工具tools.pyprompt prompt_cn.pyLLM 推理 model_provider.py致谢 agent 的核心思想&#xff1a;不断调用 LLM&#xff08;多轮对话&#xff09;&#xff0c;让 LLM 按照指定的格式&#xff08;例如 json&#xff09;进行回复&#xff0c;提取 LLM 回复…

仅1天录用!3天见刊!这本毕业“水刊”,全科都收,极速上线!

【欧亚科睿学术】 01 期刊简介 【期刊类别】计算机工程类EI 【期刊简介】最新EI期刊目录内源刊 【版面情况】仅10篇版面 【审稿周期】预计2-4周左右录用 【检索情况】EI&Scopus双检 【征稿领域】计算机工程领域相关稿件均可。 02 征稿领域 该期刊发表有关计算机在各…

使用`War`包部署`Jenkins`(超级详细)

使用War包部署Jenkins(超级详细) 别着急&#xff0c;你看这年复一年&#xff0c;春光不必趁早&#xff0c;冬霜不会迟到。过去的都会过去&#xff0c;该来的都在路上&#xff0c;一切都是刚刚好。 网站说明 https://get.jenkins.io/war-stable/ war包下载地址 https://www.jenk…

Python | R | MATLAB群体消息和遗传病筛选多元统计模型

&#x1f3af;要点 &#x1f3af;概率分布结构模型&#xff1a;有向无环图模型结构、部分有向无环图、动态贝叶斯网络、结构方程模型、广义噪声或模型、连接树、聚类图、因子图、马尔可夫链 | &#x1f3af;多类分类模型&#xff1a;朴素贝叶斯分类器、求和朴素贝叶斯分类器、…

合作伙伴推广不积极?跟奖金到账时间有关!

在推广返现活动中&#xff0c;对于合作伙伴推广者来说&#xff0c;奖金是否及时到账是他们最关心的问题之一。如果品牌主一直不审批奖励数据&#xff0c;推广者则无法及时收到奖金&#xff0c;这很容易影响他们的推广积极性和忠诚度。怎样能够提高奖励审核的效率呢&#xff1f;…

java中Future使用详细介绍

一、什么是Future&#xff1f; 在并发编程中&#xff0c;可以通过Future对象来异步获取结果。 使用Thread或runnable接口都不能获取异步的执行结果&#xff0c;因为他们没有返回值。而通过实现Callable接口和Future就可以获取异步执行的结果&#xff0c;当异步执行结束后&…

SSRS中使用QRCoder生成二维码

步骤 1.下载QRCoder.dll 下载地址&#xff1a;https://download.csdn.net/download/wjl7126180/89369398 2.使用gacutil.exe安装QRCoder.dll到GAC(Global Assembly Cache) gacutil.exe是.NET Framework中的全局程序集缓存工具&#xff0c;如果没有安装.NET Framework&#…

怎么把纸质文件扫描成电子版?方法教会你!

怎么把纸质文件扫描成电子版&#xff1f;在数字化时代&#xff0c;将纸质文件转换为电子版已成为日常工作和学习的必备技能。无论是合同、证件、笔记还是其他文档&#xff0c;通过扫描软件都能轻松实现电子化&#xff0c;方便存储、查阅和分享。以下将介绍几款功能强大、操作简…