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

【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&#xff08;JavaScript Object Notation&#xff09;一种灵活、高效、轻量级的数据交换格式&#xff0c;广泛应用于各种数据交换和存储场景。 基本特点 1、简单易用&#xff1a;JSON格式非常简单&#xff0c;易于理解和使用。 2、轻量级&#xff1a;相比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. 实战概述 本次鸿蒙应用实战&#xff0c;先创建项目“ImplicitWantStartAbility”&#xff0c;接着修改In…...

go-zero(二) api语法和goctl应用

go-zero api语法和goctl应用 在实际开发中&#xff0c;我们更倾向于使用 goctl 来快速生成代码。 goctl 可以根据 api快速生成代码模板&#xff0c;包括模型、逻辑、处理器、路由等&#xff0c;大幅提高开发效率。 一、构建api demo 现在我们通过 goctl 创建一个最小化的 HT…...

java 操作Mongodb

CRUD基础操作 Springboot 操作 MongoDB 有两种方式。 第一种方式是采用 Springboot 官方推荐的 JPA 方式&#xff0c;这种操作方式&#xff0c;使用简单但是灵活性比较差。第二种方式是采用 Spring Data MongoDB 封装的 MongoDB 官方 Java 驱动 MongoTemplate 对 MongoDB 进行…...

以Java为例,实现一个简单的命令行图书管理系统,包括添加图书、删除图书、查找图书等功能。

江河湖海中的代码之旅&#xff1a;打造你的命令行图书管理系统 一、系统简介 1. Java简介 Java&#xff0c;这个编程语言界的“瑞士军刀”&#xff0c;自1995年诞生以来就以其跨平台的特性和强大的生态系统征服了无数开发者的心。想象一下&#xff0c;Java就像是一条蜿蜒曲折…...

[JavaWeb]微头条项目

完整笔记和项目代码&#xff1a; https://pan.baidu.com/s/1PZBO0mfpwDPic4Ezsk8orA?pwdwwp5 提取码: wwp5 JavaWeb-微头条项目开发 1 项目简介 1.1 业务介绍 微头条新闻发布和浏览平台,主要包含业务如下 用户功能 注册功能登录功能 头条新闻 新闻的分页浏览通过标题关键字搜…...

Linux(CentOS)安装达梦数据库 dm8

CentOS版本&#xff1a;CentOS 7&#xff0c;查看操作系统版本信息&#xff0c;请查阅 查看Linux内核版本信息 达梦数据库版本&#xff1a;dm8 一、获取 dm8 安装文件 1、下载安装文件 打开达梦官网&#xff1a;https://www.dameng.com/ 下载的文件 解压后的文件 2、上传安…...

【专题】中国企业出海洞察报告暨解码全球制胜之道报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p38314 在当今全球化的浪潮中&#xff0c;中国企业的出海行动正以前所未有的规模和速度展开&#xff0c;成为全球经济舞台上的重要力量。本报告旨在对 2024 年中国企业出海情况进行深度洞察&#xff0c;涵盖多个领域和视角。 从对外投…...

[ 跨域问题 ] 前后端以及服务端 解决跨域的各种方法

这篇文章主要介绍了跨域问题&#xff0c;包括其定义、产生原因及各种解决方法。原因是浏览器安全策略限制&#xff0c;方法有 JSONP、CORS、Domain、 postMessage、Nginx配置、.NetCore配置。 前言 什么是跨域问题? 在Web应用中&#xff0c;当一个网页的脚本试图去请求另一个域…...

网络安全之信息收集-实战-2

请注意&#xff0c;本文仅供合法和授权的渗透测试使用&#xff0c;任何未经授权的活动都是违法的。 目录 7、网络空间引擎搜索 8、github源码泄露 9、端口信息 10、框架指纹识别 11、WAF识别 12、后台查找 7、网络空间引擎搜索 FOFA&#xff1a;https://fofa.info/ 360 …...

利用飞书多维表格自动发布版本

文章目录 背景尝试1&#xff0c;轮询尝试2&#xff0c;长连接 背景 博主所在的部门比较奇特&#xff0c;每个车型每周都需要发版&#xff0c;所以实际上一周会发布好几个版本。经过之前使用流水线自动发版改造之后&#xff0c;发版的成本已经大大降低了&#xff0c;具体参考&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.新建一个文件&#xff0c;背景为白色&#xff0c;将图片素材放入文件中 2.利用CtrlJ 复制两个图层出来&#xff0c;选择第一个拷贝图层&#xff0c;选择滤镜---杂色---蒙尘与划痕 3.调整一下数值&#xff0c;大概能够模糊痘印痘坑&#xff0c;点击确定。 4.然后选择拷贝2图层…...

如何用Excel批量提取文件夹内所有文件名?两种简单方法推荐

在日常办公中&#xff0c;我们有时需要将文件夹中的所有文件名整理在Excel表格中&#xff0c;方便管理和查阅。手动复制文件名既费时又易出错&#xff0c;因此本文将介绍两种利用Excel自动提取文件夹中所有文件名的方法&#xff0c;帮助你快速整理文件信息。 方法一&#xff1…...

YOLOv8改进,YOLOv8通过RFAConv卷积创新空间注意力和标准卷积,包括RFCAConv, RFCBAMConv,二次创新C2f结构,助力涨点

摘要 空间注意力已广泛应用于提升卷积神经网络(CNN)的性能,但它存在一定的局限性。作者提出了一个新的视角,认为空间注意力机制本质上解决了卷积核参数共享的问题。然而,空间注意力生成的注意力图信息对于大尺寸卷积核来说是不足够的。因此,提出了一种新型的注意力机制—…...

【实验11】卷积神经网络(2)-基于LeNet实现手写体数字识别

&#x1f449;&#x1f3fc;目录&#x1f448;&#x1f3fc; &#x1f352;1. 数据 1.1 准备数据 1.2 数据预处理 &#x1f352;2. 模型构建 2.1 模型测试 2.2 测试网络运算速度 2.3 输出模型参数量 2.4 输出模型计算量 &#x1f352;3. 模型训练 &#x1f352;4.模…...

chatgpt训练需要什么样的gpu硬件

训练像ChatGPT这样的大型语言模型对GPU硬件提出了极高的要求&#xff0c;因为这类模型的训练过程涉及大量的计算和数据处理。以下是训练ChatGPT所需的GPU硬件的关键要素&#xff1a; ### 1. **高性能计算能力** - **Tensor Cores**: 现代深度学习训练依赖于Tensor Cores&#…...

Kubernetes常用命令

Kubernetes常用命令 一、集群管理 kubectl cluster-info&#xff1a;显示集群信息&#xff0c;包括控制平面地址和服务的 URL。 kubectl get nodes&#xff1a;查看集群中的节点列表&#xff0c;包括节点状态、IP 地址等信息。 kubectl describe node <node-name>&…...

Flutter:key的作用原理(LocalKey ,GlobalKey)

第一段代码实现的内容&#xff1a;创建了3个块&#xff0c;随机3个颜色&#xff0c;每次点击按钮时&#xff0c;把第一个块删除 import dart:math; import package:flutter/material.dart; import package:flutter_one/demo.dart;void main() {runApp(const App()); }class App…...

R语言基础入门详解

文章目录 R语言基础入门详解一、引言二、R语言环境搭建1、安装R和RStudio1.1、步骤1.2、获取工作目录 三、R语言基础2、语法基础2.1、赋值操作2.2、注释 3、数据类型与结构3.1、向量3.2、矩阵 4、基本操作4.1、数据读取4.2、数据可视化 四、R语言使用示例4.1、统计分析示例4.2、…...

django启动项目报错解决办法

在启动此项目报错&#xff1a; 类似于&#xff1a; django.core.exceptions.ImproperlyConfigured: Requested setting EMOJI_IMG_TAG, but settings are not c启动方式选择django方式启动&#xff0c;以普通python方式启动会报错 2. 这句话提供了对遇到的错误的一个重要线索…...

详细描述一下Elasticsearch搜索的过程?

大家好&#xff0c;我是锋哥。今天分享关于【详细描述一下Elasticsearch搜索的过程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 详细描述一下Elasticsearch搜索的过程&#xff1f; Elasticsearch 的搜索过程是其核心功能之一&#xff0c;允许用户对存储在 Elasticsea…...

Spring、SpringMVC、SpringBoot、Mybatis小结

Spring Spring是一个轻量级的控制反转&#xff08;IoC&#xff09;和面向切面&#xff08;AOP&#xff09;的容器&#xff08;框架&#xff09; Spring框架的核心特性包括依赖注入&#xff08;Dependency Injection &#xff0c;DI&#xff09;、面向切面编程&#xff08;Aspe…...

.NET 9 运行时中的新增功能

本文介绍了适用于 .NET 9 的 .NET 运行时中的新功能和性能改进。 文章目录 一、支持修剪的功能开关的属性模型二、UnsafeAccessorAttribute 支持泛型参数三、垃圾回收四、控制流实施技术.NET 安装搜索行为性能改进循环优化感应变量加宽Arm64 上的索引后寻址强度降低循环计数器可…...

Linux下安装mysql8.0版本

先确定我的下载安装的目录,安装文件是下载在 /opt/install 目录下面 (安装地址不同的话注意修改地址) 1.在线下载 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz2.解压 tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.t…...

kvm-dmesg:从宿主机窥探虚拟机内核dmesg日志

在虚拟化环境中&#xff0c;实时获取虚拟机内核日志对于系统管理员和开发者来说至关重要。传统的 dmesg 工具可以方便地查看本地系统的内核日志&#xff0c;但在KVM&#xff08;基于内核的虚拟机&#xff09;环境下&#xff0c;获取虚拟机内部的内核日志则复杂得多。为了简化这…...

植物明星大乱斗15

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 player.hplayer.cppparticle.hparticle.cpp player.h #pragma once #include <graphics.h> #include "vector2.h" #include "animation.h" #include "playerID.h" #include &…...

go-zero(三) 数据库操作

go-zero 数据库操作 在本篇文章中&#xff0c;我们将实现一个用户注册和登录的服务。我们将为此构建一个简单而高效的 API&#xff0c;包括请求参数和响应参数的定义。 一、Mysql连接 1. 创建数据库和表 在 MySQL 中创建名为 test_zero的数据库&#xff0c;并创建user 表 …...

SQL面试题——间隔连续问题

间隔连续问题 某游戏公司记录的用户每日登录数据如下 +----+----------+ | id| date| +----+----------+ |1001|2021-12-12| |1001|2021-12-13| |1001|2021-12-14| |1001|2021-12-16| |1001|2021-12-19| |1001|2021-12-20| |1002|2021-12-12| |1002|2021-12-16| |1002|…...

湖北荆门建设银行网站/东莞今日头条新闻

通常&#xff0c;多线程之间需要协调工作。例如&#xff0c;浏览器的一个显示图片的线程 displayThread 想要执行显示图片的任务&#xff0c;必须等待下载线程 downloadThread 将该图片下载完毕。如果图片还没有下载完&#xff0c;displayThread可以暂停&#xff0c;当download…...

吉林建设厅网站/上海网站推广广告

1. GitHub 上创建仓库 在 GitHub 页面中 new 一个仓库&#xff0c;仓库名建议和本地文件夹名称保持一致 2. 初始化本地仓库 打开自己的项目文件夹&#xff0c;右键》Git Bash Here&#xff0c;可以快速定位到本地仓库。用命令初始化 Git 仓库 $ git init -b main-b main 表…...

找别人做网站 自己管理/app开发公司排行榜

周五下午面试4399&#xff0c;4399的前台妹子确实给力&#xff0c;刚进去的时候应该赶上校招吧&#xff0c;比较多的应届生来面试&#xff0c;前台妹子给了我一张面试申请表给我填了&#xff0c;填完之后&#xff0c;过了段时间正式进入面试&#xff0c;面试的过程整个比较融洽…...

开发公司和建材商促销活动/广东百度seo

转载于:https://blog.51cto.com/tblduan/1874886...

企业做网站域名需要自己申请吗/百度代理查询

C#内存泄漏的事例 一&#xff0c;使用非托管资源忘记及时Dispose (1) 使用完非托管资源一定要Dispose或者使用using using (FileStream fsWrite new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write)){string str "我好像不能全部覆盖源文件中的数据";…...

书法网站开发的前景/线上营销策略都有哪些

对于鞋服行业的零售分销企业&#xff0c;大多数是多级组织架构的,如下图所示&#xff1a; 如何处理每个组织内部的业务以及和其它组织间的业务&#xff0c;是鞋服行业软件好坏的一个关键指标. 以上图为例&#xff0c;我们来讨论一下多级组织间的软件业务流程。 图中表示的是&a…...