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

Java对象与JSON字符串的互转

最近,工作中会涉及到Java对象与JSON字符串相互转换,虽然说并不难,但打算还是梳理一番,主要内容有:

JSON 字符串 转 普通对象
普通对象 转 JSON 字符串
JSON 字符串数组 转 List 集合对象
List 集合对象 转 JSON 字符串数组
JSON 字符串 转 装有对象的 Map
装有对象的Map 转 JSON 字符串
开始之前,需要在 pom.xml 引入相关的 jar 包:

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.10</version><scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.75</version>
</dependency>

创建一个普通对象,使用 lombok 提供的注解:

@Data
public class ExtInfo {private String orderId;private String creatTime;private String postion;private String orderType;private String amount;
}

测试1:json字符串 与 普通对象 互转

public class Demo {@Testvoid test1() {//  json字符串转普通对象String jsonStr = "{\"orderId\":\"1111\",\"creatTime\":\"20210817223001\",\"postion\":\"hangZhou xiXi\",\"orderType\":\"4\",\"amount\":\"20\"}";JSONObject jsonObject = JSONObject.parseObject(jsonStr);ExtInfo extInfo = JSONObject.toJavaObject(jsonObject, ExtInfo.class);System.out.println(extInfo);System.out.println(extInfo.getOrderId());// 普通对象转json字符串String str = JSONObject.toJSONString(extInfo);System.out.println(str);}
}

测试结果:

ExtInfo(orderId=1111, creatTime=20210817223001, postion=hangZhou xiXi, orderType=4, amount=20)
1111
{"amount":"20","creatTime":"20210817223001","orderId":"1111","orderType":"4","postion":"hangZhou xiXi"}

测试2:json字符串数组 与 List集合对象 互转

public class Demo2 {@Testvoid test2() {  // json字符串数组转对象List集合String jsonStrArray = "[{\"orderId\":\"1111\",\"creatTime\":\"20210817223001\",\"postion\":\"hangZhou xiXi\",\"orderType\":\"4\",\"amount\":\"20\"}]";JSONArray jsonArray = JSONObject.parseArray(jsonStrArray);// 方式一、根据索引获取 JSONArray 中的对象ExtInfo extInfo1 = jsonArray.getObject(0, ExtInfo.class);System.out.println(extInfo1);// 方式二、转成List,再从List获取对象List<ExtInfo> extInfos = jsonArray.toJavaList(ExtInfo.class);ExtInfo extInfo2 =  extInfos.get(0);System.out.println(extInfo2);//  List集合对象转json字符串数组String strs = JSONObject.toJSONString(extInfos);System.out.println(strs);}
}

测试结果

ExtInfo(orderId=1111, creatTime=20210817223001, postion=hangZhou xiXi, orderType=4, amount=20)
ExtInfo(orderId=1111, creatTime=20210817223001, postion=hangZhou xiXi, orderType=4, amount=20)
[{"amount":"20","creatTime":"20210817223001","orderId":"1111","orderType":"4","postion":"hangZhou xiXi"}]

测试3:json字符串 与 装有对象的Map 互转

public class Demo3 {@Testvoid test3() {  // map格式转对象String mapJsonStr = "{\"level\":{\"orderId\":\"1111\",\"creatTime\":\"20210817223001\",\"postion\":\"hangZhou xiXi\",\"orderType\":\"4\",\"amount\":\"20\"}}";Map<String, ExtInfo> extInfoMap = JSONObject.parseObject(mapJsonStr,new TypeReference<HashMap<String, ExtInfo>>() {});System.out.println(extInfoMap);System.out.println(extInfoMap.get("level"));// 对象转map格式String mapStr = JSONObject.toJSONString(extInfoMap);System.out.println(mapStr);}
}

测试结果:

{level=ExtInfo(orderId=1111, creatTime=20210817223001, postion=hangZhou xiXi, orderType=4, amount=20)}
ExtInfo(orderId=1111, creatTime=20210817223001, postion=hangZhou xiXi, orderType=4, amount=20)
{"level":{"amount":"20","creatTime":"20210817223001","orderId":"1111","orderType":"4","postion":"hangZhou xiXi"}}

相关文章:

Java对象与JSON字符串的互转

最近&#xff0c;工作中会涉及到Java对象与JSON字符串相互转换&#xff0c;虽然说并不难&#xff0c;但打算还是梳理一番&#xff0c;主要内容有&#xff1a; JSON 字符串 转 普通对象 普通对象 转 JSON 字符串 JSON 字符串数组 转 List 集合对象 List 集合对象 转 JSON 字符串…...

[笔记.AI]向量化

&#xff08;借助 DeepSeek-V3 辅助生成&#xff09; 向量化的定义 向量化&#xff08;Vectorization&#xff09; 是将文本、图像、音频等非结构化数据转换为高维数值向量&#xff08;即一组数字&#xff09;的过程。这些向量能够捕捉数据的语义、特征或上下文信息&#x…...

NSSCTF(MISC)—[justCTF 2020]pdf

相应的做题地址&#xff1a;https://www.nssctf.cn/problem/920 binwalk分离 解压文件2AE59A.zip mutool 得到一张图片 B5F31内容 B5FFD内容 转换成图片 justCTF{BytesAreNotRealWakeUpSheeple}...

Angular的理解

Angular 是一个由 Google 维护的全功能前端框架&#xff0c;适合构建复杂的企业级应用。它采用 TypeScript 作为首选语言&#xff0c;提供了一套完整的解决方案&#xff0c;包括数据绑定、依赖注入、路由、表单处理等。 1. Angular 的核心概念 1.1 组件化架构 Angular 应用由…...

广告推荐算法:COSMO算法与A9算法的对比

COSMO算法与A9算法的概念解析 1. A9算法 定义与背景&#xff1a; A9算法是亚马逊早期为电商平台研发的核心搜索算法&#xff0c;主要用于优化商品搜索结果的排序和推荐&#xff0c;其核心逻辑围绕产品属性与关键词匹配展开。自2003年推出以来&#xff0c;A9通过分析商品标题…...

10. 七大排序(含四种版本快排及优化) ******

排序算法时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性主要使用场景直接插入排序O(n)O(n)O(n)O(1)稳定小规模数据或基本有序数据希尔排序O(n^1.3)O(n)O(n log n)O(1)不稳定中等规模数据&#xff0c;对稳定性无要求选择排序O(n)O(n)O(n)O(1)不稳定小规模数…...

以下是C/C++后台开发常见的高概率面试题

一、语言基础 多态的实现 通过虚函数表&#xff08;vtable&#xff09;实现动态绑定&#xff0c;运行时根据对象类型调用对应的函数。虚函数通过virtual关键字声明&#xff0c;子类可重写基类虚函数112。 指针与引用的区别 指针是变量&#xff0c;存储地址&#xff0c;支持多…...

CentOS-查询实时报错日志-查询前1天业务报错gz压缩日志

最新版本更新 https://code.jiangjiesheng.cn/article/364?from=csdn 推荐 《高并发 & 微服务 & 性能调优实战案例100讲 源码下载》 1. 查询实时报错日志 物理路径(带*的放在靠后,或者不用*) cd /home/logs/java-gz-log-dir && tail -2000f java-gz-l…...

破界·共生:生成式人工智能(GAI)认证重构普通人的AI进化图谱

在当今这个科技日新月异的时代,人工智能(AI)正以惊人的速度改变着我们的世界。从智能家居到自动驾驶,从医疗诊断到金融分析,AI的应用已经渗透到社会生活的方方面面。面对如此迅猛的发展态势,我们不禁要问:人工智能的未来将走向何方?普通人又该如何把握这一历史机遇,学…...

HTTP代理:网页加速的隐形引擎

目录 引言&#xff1a;网页加载速度为何至关重要&#xff1f; 一、HTTP代理的核心加速原理 二、四大加速黑科技详解 三、实战场景性能对比 四、代理加速的隐藏代价 五、未来发展趋势 结语&#xff1a;智能代理的选型指南 引言&#xff1a;网页加载速度为何至关重要&#…...

Unity 常见报错 定位和查找方法

1.控制台 直接看报错信息 2.打log 例子&#xff1a; for(int i 0;i < 8;i) {Debug.Log(i);//这是打的log,看看到底i是几的时候出问题gameObject.name strs[i];} 3.断点调试 &#xff08;1&#xff09;在你想打断点的行&#xff0c;左边空白处点击可以打断点&#xff…...

人工智能之数学基础:初等反射阵

本文重点 在线性代数中,初等反射阵(Householder矩阵)作为一类特殊的正交矩阵,在矩阵变换、特征值计算及几何变换等领域具有广泛应用。其简洁的构造方式和丰富的数学性质,使其成为数值分析和几何处理中的重要工具。 什么是初等反射阵(豪斯霍尔德变换) I为单位矩阵,wwT…...

《Linux运维总结:基于银河麒麟V10操作系统+ARM64架构CPU二进制部署单机ACL版consul v1.18.1》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:《Linux运维篇:Linux系统运维指南》 一、简介 1、什么是consul Consul是HashiCorp公司推出的开源工具,用于实现 分布式系统的服务发现与配置。 Consul是分布式的、高可用的、可横向扩展的。 架构图…...

web网站页面测试点---添加功能测试

添加 一、创建新的申请时&#xff0c;关闭网络查看数据是否存在&#xff0c;并提示网络错位相关提示语 二、在文本框内输入数据 1.在文本框内输入空格&#xff0c;查看文本内容前后是否存在空格 2.在文本框内输入最大长度&#xff0c;查看能否正确提交 3.在文本框内输入最大长…...

实操自动生成接口自动化测试用例

​这期抽出来的问题是关于如何使用Eolinker自动生成接口自动化测试用例&#xff0c;也就是将API文档变更同步到测试用例&#xff0c;下面是流程的示例解析。 导入并关联API文档和自动化测试用例 首先是登陆Eolinker&#xff0c;可以直接在线使用。 进入流程测试用例详情页&am…...

【华为OD技术面试真题 - 技术面】- Java面试题(17)

华为OD面试真题精选 专栏:华为OD面试真题精选 目录: 2024华为OD面试手撕代码真题目录以及八股文真题目录 文章目录 华为OD面试真题精选虚拟机分区1. **虚拟磁盘分区**2. **虚拟机的内存分区**3. **CPU分配**4. **虚拟网络分区**5. **存储虚拟化和分区**6. **虚拟机分区管理**…...

mapState 函数的用法

mapState 是 Vuex 提供的一个辅助函数&#xff0c;其主要作用是将 Vuex 仓库中的状态映射到组件的计算属性中&#xff0c;这样在组件里就能像访问本地计算属性一样访问 Vuex 仓库中的状态。以下为你详细介绍 mapState 函数的不同用法。 1. 基本用法&#xff1a;对象形式 当使…...

【学Rust写CAD】17 通用2D仿射变换矩阵结构体(matrix/generic.rs)

源代码 // matrix.rs use std::ops::{Add, Mul};use std::ops::{Add, Mul};/// 通用2D仿射变换矩阵&#xff08;元素仅需Copy&#xff09; #[derive(Clone, Copy, Debug, PartialEq)] pub struct Matrix<X, Y, Xx, Xy, Yx, Yy> {pub x: X, pub y: Y,pub xx: Xx, pub xy:…...

STM32单片机入门学习——第3-4节: [2-1、2]软件安装和新建工程

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.01 STM32开发板学习——第一节&#xff1a; [1-1]课程简介 前言开发板说明引用解答和…...

Linux详解

01 计算机组成原理 1、什么是计算机&#xff1f; 计算机俗称电脑&#xff0c;就相当于一种人造人&#xff0c; 电脑二字蕴含着人类的对计算机的终极期望&#xff0c;希望一通电就能够像人脑一样去工作 2、为何要有计算机? 为了造出一种机器来取代人去工作&…...

IP数据报报文格式

一 概述 IP数据报由两部分组成&#xff1a;首部数据部分。首部的前一部分是固定长度&#xff0c;一共20字节大小&#xff0c;是所有IP数据报文必须具有的&#xff1b;固定部分后面是一些可选字段&#xff0c;其长度是可变的。 二 首部固定部分各字段意义 &#xff08;1&…...

自然语言处理(25:(终章Attention 1.)Attention的结构​)

系列文章目录 终章 1&#xff1a;Attention的结构 终章 2&#xff1a;带Attention的seq2seq的实现 终章 3&#xff1a;Attention的评价 终章 4&#xff1a;关于Attention的其他话题 终章 5&#xff1a;Attention的应用 目录 系列文章目录 前言 Attention的结构 一.seq…...

Minimind 训练一个自己专属语言模型

发现了一个宝藏项目&#xff0c; 宣传是完全从0开始&#xff0c;仅用3块钱成本 2小时&#xff01;即可训练出仅为25.8M的超小语言模型MiniMind&#xff0c;最小版本体积是 GPT-3 的 17000&#xff0c;做到最普通的个人GPU也可快速训练 https://github.com/jingyaogong/minimi…...

Android里面内存优化

核心思路 在Android开发中&#xff0c;内存优化是保证应用性能稳定和用户体验的关键。我通常从以下几个方面进行内存优化&#xff1a; 1. 内存泄漏检测与修复 使用LeakCanary等工具检测内存泄漏 常见内存泄漏场景&#xff1a; 静态变量持有Activity/Fragment引用 非静态内部…...

Git操作指南

Git操作指南 1.安装并配置Git Git官网&#xff1a;https://git-scm.com/downloads 安装完成后&#xff0c;打开Git Bash&#xff0c;配置Git&#xff1a; git config --global user.email "emailexample.com" git config --global user.name "Your Name&quo…...

【蓝桥杯—单片机】通信总线专项 | 真题整理、解析与拓展 (更新ing...)

通信总线专项 前言SPI第十五届省赛题 UART/RS485/RS232UARTRS485RS232第十三届省赛题小结和拓展&#xff1a;传输方式的分类第十三届省赛 其他相关考点网络传输速率第十五届省赛题第十二届省赛题 前言 在本文中我会把 蓝桥杯单片机赛道 历年真题 中涉及到通信总线的题目整理出…...

深入探究C语言中的二进制世界:从原理到实践

文章目录 深入探究C语言中的二进制世界&#xff1a;从原理到实践一、进制的本质与C语言实现1. 进制系统全景2. C语言中的进制表示3. 格式化输出进阶 二、进制转换的工程实践1. 转换算法实现2. 实际应用中的转换技巧快速二进制 - 十六进制转换位运算优化转换 3. 进制转换详细示例…...

【android bluetooth 协议分析 13】【RFCOMM详解 2】【通俗易懂 rfcomm 基本流程】

RFCOMM 协议 基本流程 一、连接建立流程&#xff08;附 BTsnoop 实例解析&#xff09; 1. L2CAP 通道建立 BTsnoop 表现&#xff1a; L2CAP_Connection_Request (PSM0x0003) // 请求建立RFCOMM专用通道L2CAP_Connection_Response (Success) // 对方同意作用&#xff1a;相…...

万字知识篇(2):SpringBoot的常用注解(上)

SpringBoot的常用注解非常的多&#xff0c;一篇文章根本讲不完&#xff0c;将分为上下两章&#xff0c;通过本章你将会系统的学习到&#xff1a; 1. 注解在SpringBoot中的作用 2. SpringBoot 常用注解速查表 3. 核心启动类注解 4. Configuration 5. Bean 6. PropertySource 7. …...

Postman —— postman实现参数化

什么时候会用到参数化 比如&#xff1a;一个模块要用多组不同数据进行测试 验证业务的正确性 Login模块&#xff1a;正确的用户名&#xff0c;密码 成功&#xff1b;错误的用户名&#xff0c;正确的密码 失败 postman实现参数化 在实际的接口测试中&#xff0c;部分参数每…...

Docker学习--容器生命周期管理相关命令--docker create 命令

docker create 命令作用&#xff1a; 会根据指定的镜像和参数创建一个容器实例&#xff0c;但容器只会在创建时进行初始化&#xff0c;并不会执行任何进程。 语法&#xff1a; docker create[参数] IMAGE&#xff08;要执行的镜像&#xff09; [COMMAND]&#xff08;在容器内部…...

算法基础_基础算法【高精度 + 前缀和 + 差分 + 双指针】

算法基础_基础算法【高精度 前缀和 差分 双指针】 ---------------高精度---------------791.高精度加法题目介绍方法一&#xff1a;代码片段解释片段一&#xff1a; 解题思路分析 792. 高精度减法题目介绍方法一&#xff1a;代码片段解释片段一&#xff1a; 解题思路分析 7…...

C语言深度解析:从零到系统级开发的完整指南

一、C语言的核心特性与优势 1. 高效性与直接硬件控制 C语言通过编译为机器码的特性&#xff0c;成为系统级开发的首选语言。例如&#xff0c;Linux内核通过C语言直接操作内存和硬件寄存器&#xff0c;实现高效进程调度。 关键点&#xff1a; malloc/free直接管理内存&#…...

Axure疑难杂症:完美解决中继器筛选问题(时间条件筛选、任性筛选)

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;中继器筛选专题 主要内容&#xff1a;时间条件筛选、多条件组合筛选、多个单一条件混合筛选 应用场景&#xff1a;各类数据表的多条件筛选均可使用…...

汇编学习之《扩展指令指针寄存器》

什么是指令指针寄存器&#xff1f; EIP (Extended Instruction Pointer): 保存cpu 下一次将要执行的代码的地址。 通过OllyGbd可以看到CPU即将执行指令的地址和EIP 内部放入的地址一致&#xff0c;多次F8依然是这样。 这里要区分下&#xff0c;之前比如EAX&#xff0c;ECX我…...

oracle-blob导出,在ob导入失败

导出&#xff1a; [oraclelncs dmp]$ /home/oracle/sqluldr2 gistar/res#pwd192.168.205.58:1521/lndb query"select * from an_odn_picture where length(PIC_CONTENT)<25000" filean_odn_picture.csv Charsetutf8 textCSV 0 rows exported at 2025-…...

【Linux笔记】进程间通信——匿名管道||进程池

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;Linux &#x1f339;往期回顾&#x1f339;&#xff1a;【Linux笔记】动态库与静态库的理解与加载 &#x1f516;流水不争&#xff0c;争的是滔滔不 一、Linux进程间通…...

Spring Boot 3.4.3 基于 Caffeine 实现本地缓存

在现代企业级应用中&#xff0c;缓存是提升系统性能和响应速度的关键技术。通过减少数据库查询或复杂计算的频率&#xff0c;缓存可以显著优化用户体验。Spring Boot 3.4.3 提供了强大的缓存抽象支持&#xff0c;而 Caffeine 作为一款高性能的本地缓存库&#xff0c;因其优异的…...

windows使用nvm管理node版本

1.下载地址&#xff1a;https://github.com/coreybutler/nvm-windows/releases 选择nvm-setup.exe 2.安装&#xff0c;下载完成后&#xff0c;以管理员身份运行 nvm-setup.exe,选择默认安装&#xff0c;一路next 3.使用&#xff0c;安装完成后会打开一个命令行窗口&#xff0…...

vscode集成deepseek实现辅助编程(银河麒麟系统)【详细自用版】

针对开发者用户&#xff0c;可在Visual Studio Code中接入DeepSeek&#xff0c;实现辅助编程。 可参考我往期文章在银河麒麟系统环境下部署DeepSeek&#xff1a;基于银河麒麟桌面&&服务器操作系统的 DeepSeek本地化部署方法【详细自用版】 一、前期准备 &#xff08…...

智谱大模型(ChatGLM3)PyCharm的调试指南

前言 最近在看一本《ChatGLM3大模型本地化部署、应用开发和微调》&#xff0c;本文就是讨论ChatGLM3在本地的初步布设。&#xff08;模型文件来自魔塔社区&#xff09; 1、建立Pycharm工程 采用的Python版本为3.11 2、安装对应的包 2.1、安装modelscope包 pip install model…...

MySQL GROUP BY分组获取非聚合列值方法

在使用MySQL进行数据库查询时&#xff0c;如果你需要对数据按照某个或某些列进行分组&#xff08;GROUP BY&#xff09;&#xff0c;并且希望在结果中包含非聚合列的值&#xff0c;你可以通过以下几种方法来实现&#xff1a; 1. 使用聚合函数 虽然这不是直接获取非聚合列值的…...

多路径 TCP 调度的另一面

参考前面的文章 一个原教旨的多路径 TCP 和 MP-BBR 公平性推演&#xff0c;一直都破而不立&#xff0c;不能光说怎样不好&#xff0c;还得说说现状情况下&#xff0c;该如何是好。 如果 receiver 乱序重排的能力有限(拜 TCP 所赐)&#xff0c;如果非要在多路径上传输 TCP&…...

在Qt中判断输入的js脚本是否只包含函数

目前在使用QtScriptEngine&#xff0c;在利用evaluate注册子函数时&#xff0c;要求用户输入的js文件中的内容仅仅是函数&#xff0c;函数体外不能出现一些变量的声明、函数的调用等其他代码。 反复咨询DeepSeek后&#xff0c;终于给出了一个目前测试可用的代码&#xff1a; b…...

【Easylive】MySQL中LEFT JOIN与INNER JOIN的使用场景对比

【Easylive】项目常见问题解答&#xff08;自用&持续更新中…&#xff09; 汇总版 在MySQL数据库查询中&#xff0c;JOIN操作是最常用的操作之一&#xff0c;而LEFT JOIN和INNER JOIN是两种最基础的JOIN类型。理解它们的区别和适用场景对于编写高效、准确的SQL查询至关重要…...

Boost库中的谓词函数

Boost库中的谓词函数 谓词函数基础概念 在编程中&#xff0c;谓词函数&#xff08;Predicate Function&#xff09;是指返回布尔值&#xff08;true或false&#xff09;的函数&#xff0c;用于检测输入是否满足特定条件。谓词函数在STL算法和Boost库中被广泛使用&#xff0c;…...

人工智能之数学基础:基于初等反射矩阵完成矩阵的QR分解

本文重点 QR分解是矩阵分解中的一种重要方法,它将一个矩阵分解为一个正交矩阵Q和一个上三角矩阵R的乘积,即A=QR。这种分解在求解线性方程组、最小二乘问题、特征值计算等领域有着广泛应用。 QR分解的定义 QR分解就是应用了初等反射矩阵,不断的通过初等反射矩阵,然后将A变…...

AI应用案例(1)——智能工牌和会话质检

今天开辟一个新的模块&#xff0c;自己平时也搜集一些典型的行业应用案例&#xff0c;不如就记录到C站&#xff0c;同时和大家也是个分享好了。 今天分享的企业和产品&#xff0c;是循环智能的智能工牌。 这个产品应用场景清晰&#xff0c;针对的行业痛点合理&#xff0c;解决…...

碰一碰发视频系统--基于H5场景开发

碰一碰发视频#碰一碰发视频#开发基于H5的"碰一碰发视频"交互系统&#xff08;类似华为/苹果的NFC碰传但通过移动端网页实现&#xff09;&#xff0c;需要结合近场通信&#xff08;NFC/H5 API&#xff09;和媒体传输技术。以下是具体实现方案 #碰一碰营销系统# #碰一…...

kotlin扩展函数的实现原理

1. 编译时转换 在编译时&#xff0c;Kotlin 扩展函数会被转换为静态函数。这个静态函数的第一个参数是接收者类型&#xff08;也就是被扩展的类&#xff09;&#xff0c;而调用扩展函数时&#xff0c;实际上是调用这个静态函数&#xff0c;并将接收者对象作为第一个参数传入。…...