【Java Web】JSON 以及 JSON 转换
JSON(JavaScript Object Notation)一种灵活、高效、轻量级的数据交换格式,广泛应用于各种数据交换和存储场景。
基本特点
1、简单易用:JSON格式非常简单,易于理解和使用。
2、轻量级:相比XML等其他数据格式,JSON占用的空间更小,传输效率更高。
3、跨平台:JSON是一种纯文本格式,可以轻松地在不同的系统和编程语言之间交换数据。
4、可读性强:JSON格式的数据结构清晰,易于阅读和调试。
数据结构
JSON支持两种数据结构
1、对象(Object):无序的键值对集合,用大括号 {} 包围。键必须是字符串,值可以是任意有效的JSON数据类型。
{"name": "John","age": 30,"isStudent": false,"hobbies": ["reading", "coding", "traveling"]
}
2、数组(Array):有序的值集合,用方括号 [] 包围。数组中的值可以是任意有效的JSON数据类型。
["apple","banana",42,true,{"name": "Alice","age": 25}
]
在Java中使用 org.json.JSONObject 类来解析和生成JSON数据。
import org.json.JSONObject;// 解析JSON
String jsonString = "{\"name\": \"John\", \"age\": 30}";
JSONObject jsonObject = new JSONObject(jsonString);
System.out.println(jsonObject.getString("name")); // 输出: John// 生成JSON
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "John");
jsonObject.put("age", 30);
String jsonString = jsonObject.toString();
System.out.println(jsonString); // 输出: {"name":"John","age":30}
转换
fastjson 是阿里巴巴开源的一个高性能的JSON库

导入项目

1、对象或集合(内套集合也可以)转JSON对象
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;public class User {private String name;private int age;// getter 和 setter 方法
}public class JsonExample {public static void main(String[] args) {User user = new User();user.setName("John");user.setAge(30);// 对象转JSON字符串String jsonString = JSON.toJSONString(user);System.out.println(jsonString); // 输出: {"name":"John","age":30}// 对象转JSONObjectJSONObject json = new JSONObject();json.putAll(JSON.parseObject(jsonString));System.out.println(json.toJSONString()); // 输出: {"name":"John","age":30}}
}
2、JSON格式字符串与JSON对象之间的转换
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;public class JsonExample {public static void main(String[] args) {String j = "{\"goodslist\":[{\"goods_id\":1}],\"name\":\"张三\"}";// JSON字符串转JSONObjectJSONObject jsonObject = JSON.parseObject(j);System.out.println(jsonObject.toJSONString()); // 输出: {"goodslist":[{"goods_id":1}],"name":"张三"}// 或者JSONObject jsonObject2 = JSONObject.parseObject(j);System.out.println(jsonObject2.toJSONString()); // 输出: {"goodslist":[{"goods_id":1}],"name":"张三"}}
}
3、JSON字符串-数组类型与JSONArray之间的转换
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;public class JsonExample {public static void main(String[] args) {String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";// JSON字符串转JSONArrayJSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);System.out.println(jsonArray.toJSONString()); // 输出: [{"studentName":"lily","studentAge":12},{"studentName":"lucy","studentAge":15}]}
}
4、复杂JSON格式字符串与JSONObject之间的转换
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;public class JsonExample {public static void main(String[] args) {String j = "{\"goodslist\":[{\"goods_id\":1}],\"name\":\"张三\"}";// 复杂JSON字符串转JSONObjectJSONObject jsonObject = JSON.parseObject(j);System.out.println(jsonObject.toJSONString()); // 输出: {"goodslist":[{"goods_id":1}],"name":"张三"}}
}
5、JSON字符串转JAVA对象
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;public class User {private String name;private int age;// getter 和 setter 方法
}public class JsonExample {public static void main(String[] args) {String j = "{\"name\":\"张三\",\"age\":30}";// JSON字符串转User对象User user = JSON.parseObject(j, new TypeReference<User>() {});System.out.println(user.getName()); // 输出: 张三System.out.println(user.getAge()); // 输出: 30}
}
6、JSON字符串集合转LIST对象
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;public class Goods {private int goods_id;// getter 和 setter 方法
}public class JsonExample {public static void main(String[] args) {String str = "[{\"goods_id\":1},{\"goods_id\":2}]";// JSON字符串集合转List<Goods>对象List<Goods> goodslist = JSON.parseObject(str, new TypeReference<ArrayList<Goods>>() {});for (Goods goods : goodslist) {System.out.println(goods.getGoods_id());}// 输出: 1// 输出: 2}
}
- JSON字符串转JSON对象:使用
JSON.parseObject()或JSONObject.parseObject()。 - JSON对象转JSON字符串:使用
JSON.toJSONString()或jsonObject.toJSONString()。 - JSON字符串转JSONArray:使用
JSON.parseArray()。 - JSON字符串转Java对象:使用
JSON.parseObject()并指定目标类或TypeReference。 - JSON字符串集合转List对象:使用
JSON.parseObject()并指定TypeReference。
相关文章:
【Java Web】JSON 以及 JSON 转换
JSON(JavaScript Object Notation)一种灵活、高效、轻量级的数据交换格式,广泛应用于各种数据交换和存储场景。 基本特点 1、简单易用:JSON格式非常简单,易于理解和使用。 2、轻量级:相比XML等其他数据格…...
Qt 元对象系统
Qt 元对象系统 Qt 元对象系统1. 元对象的概念2. 元对象系统的核心组件2.1 QObject2.2 Q_OBJECT 宏2.3 Meta-Object Compiler (MOC) 3. 信号与槽3.1 基本概念信号与槽的本质信号和槽的关键特征 3.2 绑定信号与槽参数解析断开连接 3.3 标准信号与槽查找标准信号与槽使用示例规则与…...
鸿蒙实战:使用隐式Want启动Ability
文章目录 1. 实战概述2. 实现步骤2.1 创建鸿蒙应用项目2.2 修改Index.ets代码2.3 创建LuzhouAbility2.4 创建Luzhou页面2.5 设置模块配置文件 3. 测试效果4. 实战总结 1. 实战概述 本次鸿蒙应用实战,先创建项目“ImplicitWantStartAbility”,接着修改In…...
go-zero(二) api语法和goctl应用
go-zero api语法和goctl应用 在实际开发中,我们更倾向于使用 goctl 来快速生成代码。 goctl 可以根据 api快速生成代码模板,包括模型、逻辑、处理器、路由等,大幅提高开发效率。 一、构建api demo 现在我们通过 goctl 创建一个最小化的 HT…...
java 操作Mongodb
CRUD基础操作 Springboot 操作 MongoDB 有两种方式。 第一种方式是采用 Springboot 官方推荐的 JPA 方式,这种操作方式,使用简单但是灵活性比较差。第二种方式是采用 Spring Data MongoDB 封装的 MongoDB 官方 Java 驱动 MongoTemplate 对 MongoDB 进行…...
以Java为例,实现一个简单的命令行图书管理系统,包括添加图书、删除图书、查找图书等功能。
江河湖海中的代码之旅:打造你的命令行图书管理系统 一、系统简介 1. Java简介 Java,这个编程语言界的“瑞士军刀”,自1995年诞生以来就以其跨平台的特性和强大的生态系统征服了无数开发者的心。想象一下,Java就像是一条蜿蜒曲折…...
[JavaWeb]微头条项目
完整笔记和项目代码: https://pan.baidu.com/s/1PZBO0mfpwDPic4Ezsk8orA?pwdwwp5 提取码: wwp5 JavaWeb-微头条项目开发 1 项目简介 1.1 业务介绍 微头条新闻发布和浏览平台,主要包含业务如下 用户功能 注册功能登录功能 头条新闻 新闻的分页浏览通过标题关键字搜…...
Linux(CentOS)安装达梦数据库 dm8
CentOS版本:CentOS 7,查看操作系统版本信息,请查阅 查看Linux内核版本信息 达梦数据库版本:dm8 一、获取 dm8 安装文件 1、下载安装文件 打开达梦官网:https://www.dameng.com/ 下载的文件 解压后的文件 2、上传安…...
【专题】中国企业出海洞察报告暨解码全球制胜之道报告汇总PDF洞察(附原数据表)
原文链接:https://tecdat.cn/?p38314 在当今全球化的浪潮中,中国企业的出海行动正以前所未有的规模和速度展开,成为全球经济舞台上的重要力量。本报告旨在对 2024 年中国企业出海情况进行深度洞察,涵盖多个领域和视角。 从对外投…...
[ 跨域问题 ] 前后端以及服务端 解决跨域的各种方法
这篇文章主要介绍了跨域问题,包括其定义、产生原因及各种解决方法。原因是浏览器安全策略限制,方法有 JSONP、CORS、Domain、 postMessage、Nginx配置、.NetCore配置。 前言 什么是跨域问题? 在Web应用中,当一个网页的脚本试图去请求另一个域…...
网络安全之信息收集-实战-2
请注意,本文仅供合法和授权的渗透测试使用,任何未经授权的活动都是违法的。 目录 7、网络空间引擎搜索 8、github源码泄露 9、端口信息 10、框架指纹识别 11、WAF识别 12、后台查找 7、网络空间引擎搜索 FOFA:https://fofa.info/ 360 …...
利用飞书多维表格自动发布版本
文章目录 背景尝试1,轮询尝试2,长连接 背景 博主所在的部门比较奇特,每个车型每周都需要发版,所以实际上一周会发布好几个版本。经过之前使用流水线自动发版改造之后,发版的成本已经大大降低了,具体参考&a…...
深入内核讲明白Android Binder【一】
深入内核讲明白Android Binder【一】 前言一、Android Binder应用编写概述二、基于C语言编写Android Binder跨进程通信Demo0. Demo简介1. 服务的管理者server_manager.c2. Binder服务端代码实现 test_service.c2.1 实现思路2.2 完整实现代码 3. Binder客户端代码实现 test_clie…...
Photoshop(PS)——人像磨皮
1.新建一个文件,背景为白色,将图片素材放入文件中 2.利用CtrlJ 复制两个图层出来,选择第一个拷贝图层,选择滤镜---杂色---蒙尘与划痕 3.调整一下数值,大概能够模糊痘印痘坑,点击确定。 4.然后选择拷贝2图层…...
如何用Excel批量提取文件夹内所有文件名?两种简单方法推荐
在日常办公中,我们有时需要将文件夹中的所有文件名整理在Excel表格中,方便管理和查阅。手动复制文件名既费时又易出错,因此本文将介绍两种利用Excel自动提取文件夹中所有文件名的方法,帮助你快速整理文件信息。 方法一࿱…...
YOLOv8改进,YOLOv8通过RFAConv卷积创新空间注意力和标准卷积,包括RFCAConv, RFCBAMConv,二次创新C2f结构,助力涨点
摘要 空间注意力已广泛应用于提升卷积神经网络(CNN)的性能,但它存在一定的局限性。作者提出了一个新的视角,认为空间注意力机制本质上解决了卷积核参数共享的问题。然而,空间注意力生成的注意力图信息对于大尺寸卷积核来说是不足够的。因此,提出了一种新型的注意力机制—…...
【实验11】卷积神经网络(2)-基于LeNet实现手写体数字识别
👉🏼目录👈🏼 🍒1. 数据 1.1 准备数据 1.2 数据预处理 🍒2. 模型构建 2.1 模型测试 2.2 测试网络运算速度 2.3 输出模型参数量 2.4 输出模型计算量 🍒3. 模型训练 🍒4.模…...
chatgpt训练需要什么样的gpu硬件
训练像ChatGPT这样的大型语言模型对GPU硬件提出了极高的要求,因为这类模型的训练过程涉及大量的计算和数据处理。以下是训练ChatGPT所需的GPU硬件的关键要素: ### 1. **高性能计算能力** - **Tensor Cores**: 现代深度学习训练依赖于Tensor Cores&#…...
Kubernetes常用命令
Kubernetes常用命令 一、集群管理 kubectl cluster-info:显示集群信息,包括控制平面地址和服务的 URL。 kubectl get nodes:查看集群中的节点列表,包括节点状态、IP 地址等信息。 kubectl describe node <node-name>&…...
Flutter:key的作用原理(LocalKey ,GlobalKey)
第一段代码实现的内容:创建了3个块,随机3个颜色,每次点击按钮时,把第一个块删除 import dart:math; import package:flutter/material.dart; import package:flutter_one/demo.dart;void main() {runApp(const App()); }class App…...
SIGTRAN协议:电信网络IP化的关键技术解析
1. SIGTRAN:下一代电信网络的信令传输基石2003年全球电信业寒冬中,一个技术决策正在悄然改变行业格局。当运营商们紧缩资本开支时,AT&T、Verizon等巨头却不约而同地加大了对IP网络的投入。这背后隐藏着一个关键技术转折——传统TDM网络向…...
Claude Code 代码保存全攻略:告别丢失,高效管理开发成果
日常开发中,用 Claude Code 生成代码后,很多人都会遇到这些糟心事:生成的代码片段零散复制,换个会话就找不到;手动保存步骤繁琐,遗漏文件或格式错乱;切换不同 AI 模型时,代码记录无法…...
别再死记硬背截止、放大、饱和了!用Arduino+面包板,5分钟直观理解NPN/PNP三极管
用Arduino实验破解三极管的三大工作状态之谜 记得第一次翻开电子学教材看到三极管章节时,那些密密麻麻的曲线图和公式让我头皮发麻。"截止区"、"放大区"、"饱和区"——这些抽象概念就像天书一样难以理解。直到有一天,我拿…...
为什么设计师集体弃用Sora 2改投Veo?——从渲染延迟、长时序连贯性到版权水印支持的6维生产力对比
更多请点击: https://intelliparadigm.com 第一章:Veo vs Sora 2视频质量对比测试全景概览 为客观评估当前主流生成式视频模型的视觉保真度与时空一致性,我们构建了统一测试基准,涵盖运动连贯性、纹理细节还原、文本-视频对齐精度…...
三步实现iOS虚拟定位:无需越狱的终极免费方案
三步实现iOS虚拟定位:无需越狱的终极免费方案 【免费下载链接】iFakeLocation Simulate locations on iOS devices on Windows, Mac and Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/if/iFakeLocation iFakeLocation是一个专业级的iOS虚拟定位工具&am…...
零命令行部署飞书AI机器人:桌面应用实现开箱即用
1. 项目概述:一个为普通人设计的飞书AI机器人桌面应用 如果你在飞书里用过官方提供的“AI助手”,可能会觉得它功能不错,但总有些限制——不能自由选择模型,无法深度定制,更别提把它无缝集成到你的工作流里了。于是&am…...
云原生地理空间分析引擎Meridian:基于Arrow与GeoParquet的高性能架构解析
1. 项目概述:一个面向未来的开源地理空间数据引擎最近在折腾一个涉及大量地理信息处理的项目,从海量GPS轨迹点到复杂的多边形区域分析,传统的数据库和工具链在处理效率和灵活性上开始捉襟见肘。就在这个当口,我注意到了GitHub上一…...
9. 找到字符串中所有字母异位词
给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。方法一:哈希表class Solution(object):def findAnagrams(self, s, p):result{}result["".join(sorted(p))][]for i in ra…...
第六篇:《JMeter逻辑控制器:循环、条件和交替执行》
在实际业务测试中,并非只是简单的顺序执行。有时需要重复执行某些操作(循环),有时需要根据条件决定执行哪个分支(条件),有时需要模拟多个用户的交替行为(交替)。JMeter 提…...
深度解析:Mermaid实时编辑器架构设计与工程实践指南
深度解析:Mermaid实时编辑器架构设计与工程实践指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-editor …...
