Java学习手册:JSON 数据格式基础知识
1. JSON 简介
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。它最初来源于 JavaScript,但如今已被许多语言所采用,包括 Java、Python、C++ 等。JSON 以其简洁和清晰的结构,成为 Web 应用中数据传输的首选格式之一。
2. JSON 的基本结构
JSON 主要有两种结构:
- JSON 对象 :由大括号
{}
括起来的部分,表示一组键值对。键是字符串,值可以是字符串、数字、布尔值、数组、JSON 对象或null
等。键和值之间用冒号:
分隔,键值对之间用逗号,
分隔。例如:
{"name": "John Doe","age": 30,"isStudent": false,"address": {"street": "123 Main St","city": "Anytown","zipcode": "12345"}
}
在上面的例子中,name
、age
、isStudent
、address
是键,对应的值分别是字符串"John Doe"
、数字30
、布尔值false
和另一个 JSON 对象。
- JSON 数组 :由方括号
[]
括起来的部分,表示一个有序的值的集合。数组中的值可以是任何合法的 JSON 数据类型,包括字符串、数字、布尔值、对象、数组或null
等。例如:
["apple","banana","orange"
]
或者
[{"name": "John Doe","age": 30},{"name": "Jane Smith","age": 25}
]
3. JSON 数据类型
JSON 支持以下数据类型:
- 字符串 :用双引号
""
括起来的文本。例如:"Hello, World!"
、"123 Main St"
。 - 数字 :包括整数和浮点数。例如:
42
、3.14
、-10
。 - 布尔值 :只有两个值,
true
和false
。 - 数组 :用方括号
[]
括起来的有序值的集合。例如:[1, 2, 3]
、["apple", "banana"]
。 - 对象 :用大括号
{}
括起来的键值对的集合。例如上面提到的 JSON 对象示例。 null
:表示空值。例如:null
。
4. JSON 的优势
- 简洁易懂 :JSON 的格式简单明了,易于人类阅读和编写。它的语法非常直观,几乎不需要额外的学习成本。
- 跨语言支持 :JSON 被广泛应用于各种编程语言中,几乎所有主流的编程语言都提供了对 JSON 的支持,包括 Java、JavaScript、Python、C++ 等。这使得 JSON 成为不同系统之间进行数据交换的理想选择。
- 轻量级 :JSON 的数据格式简洁,占用的字节数少,传输效率高。与 XML 等其他数据格式相比,JSON 没有繁琐的标签和命名空间等额外信息,使得数据传输更加高效。
- 易于解析和生成 :由于 JSON 的结构清晰,解析和生成 JSON 数据相对简单。无论是客户端还是服务器端,都可以轻松地将 JSON 数据转换为本地对象,或者将本地对象转换为 JSON 数据,便于数据的处理和交换。
5. JSON 在 JavaWeb 开发中的应用场景
- 前后端数据交互 :在 JavaWeb 开发中,前端和后端之间的数据交互是一个常见的场景。前端通过 AJAX 请求向后端发送 JSON 格式的请求数据,后端接收到数据后进行处理,并将结果以 JSON 格式返回给前端。例如,前端发送一个包含用户信息的 JSON 对象,后端接收到后进行用户注册或登录操作,并返回一个包含操作结果和用户数据的 JSON 对象。
- API 数据传输 :JSON 是 RESTful API 中最常用的数据传输格式之一。JavaWeb 应用可以提供 RESTful API,以 JSON 格式返回数据,供其他应用或系统调用。例如,一个电商系统的 JavaWeb 后端可以提供一个获取商品列表的 API,返回一个包含商品信息的 JSON 数组。
- 配置文件 :JSON 也可以用作配置文件的格式。由于其简洁易读的特性,一些 JavaWeb 应用会使用 JSON 文件来存储配置信息,如数据库连接配置、应用设置等。
6. JSON 示例
以下是一个更复杂的 JSON 示例,展示了一个在线书店的图书信息:
{"books": [{"id": 1,"title": "Java 入门","author": "张三","price": 49.9,"categories": ["编程", "Java"],"inStock": true,"publicationDate": "2022-01-15"},{"id": 2,"title": "Web 开发实战","author": "李四","price": 59.9,"categories": ["Web 开发", "前端"],"inStock": false,"publicationDate": "2022-05-20"}],"totalBooks": 2,"lastUpdated": "2023-06-01"
}
在这个示例中,最外层是一个 JSON 对象,包含三个键值对:
books
:一个 JSON 数组,每个元素都是一个 JSON 对象,表示一本书的信息。totalBooks
:一个数字,表示书籍的总数。lastUpdated
:一个字符串,表示最后更新日期。
通过这个示例,可以看出 JSON 能够灵活地表示复杂的数据结构,满足各种数据传输和存储的需求。
7. JSON 与 XML 的对比
JSON 和 XML 都是常用的数据交换格式,但它们有一些显著的区别:
- 简洁性 :JSON 比 XML 更简洁,占用的空间更少。XML 需要使用开始标签和结束标签来包裹数据,而 JSON 则使用更简洁的键值对结构。
- 可读性 :JSON 的可读性通常被认为比 XML 更好,因为它没有繁琐的标签结构,直接以键值对的形式展示数据。
- 数据类型支持 :JSON 内置了丰富的数据类型,如布尔值、数字、字符串、数组、对象等,而 XML 没有内置的数据类型,数据类型需要通过额外的 XML Schema 来定义。
- 解析和生成效率 :JSON 的解析和生成通常比 XML 更快,因为其结构更简单,解析器的实现更高效。
- 开发体验 :在 JavaScript 中,JSON 是原生支持的,可以非常方便地将 JSON 数据转换为 JavaScript 对象,反之亦然。而 XML 在 JavaScript 中的处理相对复杂一些,需要使用 DOM 或其他库来解析和生成。
8. 总结
JSON 是一种非常实用的数据交换格式,在 JavaWeb 开发中扮演着重要的角色。通过理解 JSON 的基本结构、数据类型和优势,开发人员能够更好地进行前后端数据交互、构建 RESTful API 以及处理各种数据传输场景。JSON 的简洁性和易用性使其成为现代 Web 开发中不可或缺的一部分,掌握 JSON 的使用方法对于 JavaWeb 开发人员来说是必不可少的技能。
相关文章:

Java学习手册:JSON 数据格式基础知识
1. JSON 简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。它最初来源于 JavaScript,但如今已被许多语言所采用,包括 Java、Python、C 等。JSON 以…...
【Python爬虫详解】第四篇:使用解析库提取网页数据——BeautifuSoup
在前一篇文章中,我们学习了如何编写第一个爬虫程序,成功获取了网页的HTML内容。然而,原始HTML通常包含大量我们不需要的信息,真正有价值的数据往往隐藏在HTML的标签和属性中。这一篇,我们将学习如何使用Python的解析库…...

《重塑AI应用架构》系列: Serverless与MCP融合创新,构建AI应用全新智能中枢
在人工智能飞速发展的今天,数据孤岛和工具碎片化问题一直是阻碍AI应用高效发展的两大难题。由于缺乏统一的标准,AI应用难以无缝地获取和充分利用数据价值。 为了解决这些问题,2024年AI领域提出了MCP(Model Context Protocol模型上…...

深度图可视化
import cv2# 1.读取一张深度图 depth_img cv2.imread("Dataset_depth/images/train/1112_0-rgb.png", cv2.IMREAD_UNCHANGED) print(depth_img.shape) cv2.imshow("depth", depth_img) # (960, 1280) print(depth_img)# 读取一张rgb的图片做对比 input_p…...
【调优】log日志海量数据分表后查询速度调优
原始实现 使用pagehelper实现分页 // 提取开始时间的年份和月份,拼装成表名List<String> timeBetween getTimeBetween(condition);List<String> fullTableName getFullTableName(Constants.LOG_TABLE_NAME, timeBetween);PageHelperUtil.startPage(c…...
hive默认的建表格式
在 Hive 中创建表时,默认的建表语法格式如下: CREATE TABLE table_name (column1_type,column2_type,... ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE;在这个语法中: CREATE TABLE table_name:指定要创建…...
sass 变量
基本使用 如果分配给变量的值后面添加了 !default 标志 ,这意味着该变量如果已经赋值,那么它不会被重新赋值,但是,如果它尚未赋值,那么它会被赋予新的给定值。 如果在此之前变量已经赋值,那就不使用默认值…...

微软Edge浏览器字体设置
前言 时间:2025年4月 自2025年4月起,微软Edge浏览器的默认字体被微软从微软雅黑替换成了Noto Sans,如下图。Noto Sans字体与微软雅黑风格差不多,但在4K以下分辨率的显示器上较微软雅黑更模糊,因此低分辨率的显示器建议…...

Vue生命周期详细解析
前言 Vue.js作为当前最流行的前端框架之一,其生命周期钩子函数是每个Vue开发者必须掌握的核心概念。本文将全面解析Vue的生命周期,帮助开发者更好地理解Vue实例的创建、更新和销毁过程。 一、Vue生命周期概述 Vue实例从创建到销毁的整个过程被称为Vue…...

基于c#,wpf,ef框架,sql server数据库,音乐播放器
详细视频: 【基于c#,wpf,ef框架,sql server数据库,音乐播放器。-哔哩哔哩】 https://b23.tv/ZqmOKJ5...

前端项目搭建集锦:vite、vue、react、antd、vant、ts、sass、eslint、prettier、浏览器扩展,开箱即用,附带项目搭建教程
前端项目搭建集锦:vite、vue、react、antd、vant、ts、sass、eslint、prettier、浏览器扩展,开箱即用,附带项目搭建教程 前言:一、Vue项目下载快速通道二、React项目下载快速通道三、BrowserPlugins项目下载快速通道四、项目搭建教…...
【C++游戏引擎开发】第21篇:基于物理渲染(PBR)——统计学解构材质与光影
引言 宏观现象:人眼观察到的材质表面特性(如金属的高光锐利、石膏的漫反射柔和),本质上是微观结构对光线的统计平均结果。 微观真相:任何看似平整的表面在放大后都呈现崎岖的微观几何。每个微表面(Microfacet)均为完美镜面,但大量微表面以不同朝向分布时,宏观上会表…...

什么是Maven
Maven的概念 Maven是一个一键式的自动化的构建工具。Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于Java 平台的项目构建和依赖管理。Maven 这个单词的本意是:专家,内行。Maven 是目前最流行的自动化构建工具࿰…...
强化学习复习,价值函数的推导——北大pdf p41(ppt75)(动手学也有)
我们经常看到强化学习中有求汇报期望 E E E,转化为价值函数(value function) V V V,策略的状态价值函数(State-Value function) V π V_π Vπ和动作价值函数(action-value function) Q π Q_π Qπ。还有提到通过将期望将消除…...

neo4j中节点内的名称显示不全解决办法(如何让label在节点上自动换行)
因为节点过多而且想让节点中所有文字都显示出来而放大节点尺寸 从neo4j中导出png,再转成PDF来查看时,要看清节点里面的文字就得放大5倍才行 在网上看了很多让里面文字换行的办法都不行 然后找到一个比较靠谱的办法是在要显示的标签内加换行符 但是我的节点上显示的是…...
day 32 学习笔记
文章目录 前言一、模版匹配的概念二、模版匹配方法 前言 通过今天的学习,我掌握了OpenCV中有关模版匹配和模版匹配方法的相关原理和操作 一、模版匹配的概念 模板匹配就是用模板图(通常是一个小图)在目标图像(通常是一个比模板图…...

【GIT】github中的仓库如何删除?
你可以按照以下步骤删除 GitHub 上的仓库(repository): 🚨 注意事项: ❗️删除仓库是不可恢复的操作,所有代码、issue、pull request、release 等内容都会被永久删除。 🧭 删除 GitHub 仓库步骤…...
使用Python将YOLO的XML标注文件转换为TXT文件格式
使用Python将YOLO的XML标注文件转换为TXT文件格式,并划分数据集 import xml.etree.ElementTree as ET import os from os import listdir, getcwd from os.path import join import random from shutil import copyfile from PIL import Image# 只要改下面的CLASSE…...
docker容器监控自动恢复
关于实现对docker容器监控以及自动恢复,这里介绍两种实现方案。 方案1: 实现思路: 找到(根据正则表达式)所有待监控的docker容器,此处筛选逻辑根据docker运行状态找到已停止(Exit)类…...
【农气项目】基于适宜度的产量预报
直接上干货(复制到开发工具即可运行的代码) 1. 适宜度模型及作物適宜度计算方法 2. 产量分离 3. 基于适宜度计算产量预报 1. 适宜度模型及作物適宜度计算方法 // 三基点温度配置private final double tempMin;private final double tempOpt;private f…...
1、AI及LLM基础:Python语法入门教程
Python语法入门教程 这是一份全面的Python语法入门教程,涵盖了注释、变量类型与操作符、逻辑运算、list和字符串、变量与集合、控制流和迭代、模块、类、继承、进阶等内容,通过详细的代码示例和解释,帮助大家快速熟悉Python语法。 文章目录 Python语法入门教程一、注释二…...

3台CentOS虚拟机部署 StarRocks 1 FE+ 3 BE集群
背景:公司最近业务数据量上去了,需要做一个漏斗分析功能,实时性要求较高,mysql已经已经不在适用,做了个大数据技术栈选型调研后,决定使用StarRocks StarRocks官网:StarRocks | A High-Performa…...
服务器上安装node
1.安装 下载安装包 https://nodejs.org/en/download 解压安装包 将安装包上传到/opt/software目录下 cd /opt/software tar -xzvf node-v16.14.2-linux-x64.tar.gz 将解压的文件夹移动到安装目录(/opt/nodejs)下 mv /opt/software/node-v16.14.2-linux-x64 /opt/nodejs …...
精益数据分析(20/126):解析经典数据分析框架,助力创业增长
精益数据分析(20/126):解析经典数据分析框架,助力创业增长 在创业和数据分析的学习道路上,每一次深入探索都可能为我们带来新的启发。今天,依旧带着和大家共同进步的想法,我们一起深入研读《精…...
9.策略模式:思考与解读
原文地址:策略模式:思考与解读 更多内容请关注:7.深入思考与解读设计模式 引言 你是否曾遇到过这样的情况:在一个系统中,有许多算法或策略,每种策略的实现逻辑相似,但在某些情况下需要进行替换和扩展&am…...

【HCIA】简易的两个VLAN分别使用DHCP分配IP
前言 之前我们通过 静态ip地址实现了Vlan间通信 ,现在我们添加一个常用的DHCP功能。 文章目录 前言1. 配置交换机2. 接口模式3. 全局模式后记修改记录 1. 配置交换机 首先,使用DHCP,需要先启动DHCP服务: [Huawei]dhcp enable I…...
【设计模式-4】深入理解设计模式:工厂模式详解
在软件开发中,对象的创建是一个基础但至关重要的环节。随着系统复杂度的增加,直接使用new关键字实例化对象会带来诸多问题,如代码耦合度高、难以扩展和维护等。工厂模式(Factory Pattern)作为一种创建型设计模式&#…...
Spring Boot 整合 JavaFX 核心知识点详解
1. 架构设计与集成模式 1.1 Spring Boot 与 JavaFX 的分层架构设计 Spring Boot 与 JavaFX 的整合需要精心设计的分层架构,以充分利用两个框架的优势。 标准分层架构 ┌────────────────────────────────────────────────…...
Spring MVC DispatcherServlet 的作用是什么? 它在整个请求处理流程中扮演了什么角色?为什么它是核心?
DispatcherServlet 是 Spring MVC 框架的绝对核心和灵魂。它扮演着前端控制器(Front Controller)的角色,是所有进入 Spring MVC 应用程序的 HTTP 请求的统一入口点和中央调度枢纽。 一、 DispatcherServlet 的核心作用和职责: 请…...
亚马逊英国站FBA费用重构:轻小商品迎红利期,跨境卖家如何抢占先机?
一、政策背景:成本优化成平台与卖家共同诉求 2024年4月,亚马逊英国站(Amazon.co.uk)发布近三年来力度最大的FBA费用调整方案,标志着英国电商市场正式进入精细化成本管理时代。这一决策背后,是多重因素的叠…...