Java学习手册:JSON 数据格式基础知识

news2025/7/16 11:26:40

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"
  }
}

在上面的例子中,nameageisStudentaddress是键,对应的值分别是字符串"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"
  • 数字 :包括整数和浮点数。例如:423.14-10
  • 布尔值 :只有两个值,truefalse
  • 数组 :用方括号[]括起来的有序值的集合。例如:[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 开发人员来说是必不可少的技能。

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

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

相关文章

《重塑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…

微软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项目下载快速通道四、项目搭建教…

什么是Maven

Maven的概念 Maven是一个一键式的自动化的构建工具。Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于Java 平台的项目构建和依赖管理。Maven 这个单词的本意是:专家,内行。Maven 是目前最流行的自动化构建工具&#xff0…

neo4j中节点内的名称显示不全解决办法(如何让label在节点上自动换行)

因为节点过多而且想让节点中所有文字都显示出来而放大节点尺寸 从neo4j中导出png,再转成PDF来查看时,要看清节点里面的文字就得放大5倍才行 在网上看了很多让里面文字换行的办法都不行 然后找到一个比较靠谱的办法是在要显示的标签内加换行符 但是我的节点上显示的是…

【GIT】github中的仓库如何删除?

你可以按照以下步骤删除 GitHub 上的仓库(repository): 🚨 注意事项: ❗️删除仓库是不可恢复的操作,所有代码、issue、pull request、release 等内容都会被永久删除。 🧭 删除 GitHub 仓库步骤…

3台CentOS虚拟机部署 StarRocks 1 FE+ 3 BE集群

背景:公司最近业务数据量上去了,需要做一个漏斗分析功能,实时性要求较高,mysql已经已经不在适用,做了个大数据技术栈选型调研后,决定使用StarRocks StarRocks官网:StarRocks | A High-Performa…

【HCIA】简易的两个VLAN分别使用DHCP分配IP

前言 之前我们通过 静态ip地址实现了Vlan间通信 ,现在我们添加一个常用的DHCP功能。 文章目录 前言1. 配置交换机2. 接口模式3. 全局模式后记修改记录 1. 配置交换机 首先,使用DHCP,需要先启动DHCP服务: [Huawei]dhcp enable I…

艾蒙顿桌面app下载-Emotn UI下载安装-emotn ui官方tv版安卓固件

在智能电视桌面应用的领域里,Emotn UI 凭借其简洁无广告、可自定义等特点,赢得了不少用户的关注。然而,小编深入了解后发现了一款更好用的电视桌面——乐看家桌面在诸多方面更具优势,能为你带来更优质的大屏体验。 乐看家桌面内置…

3、ArkTS语言介绍

目录 基础知识函数函数声明可选参数Rest参数返回类型箭头函数(又名Lambda函数)闭包 类字段字段初始化getter和setter继承父类访问方法重写方法重载签名可见性修饰符(Public、Private、protected) 基础知识 ArkTS是一种为构建高性…

修改了Element UI中组件的样式,打包后样式丢失

修改了Element UI中组件的样式,在本地运行没有问题,但是打包到线上发现样式丢失(样式全部不生效、或者有一部分生效,一部分不生效),问题在于css的加载顺序导致代码编译后样式被覆盖了, 解决办法…

【springsecurity oauth2授权中心】jwt令牌更换成自省令牌 OpaqueToken P4

前言 前面实现了授权中心授权,客户端拿到access_token后就能请求资源服务器接口 权限的校验都是在资源服务器上进行的,授权服务器颁发的access_token有限期是2小时,也就是说在2小时之内,不管授权服务器那边用户的权限如何变更都…

诱骗协议芯片支持PD2.0/3.0/3.1/PPS协议,支持使用一个Type-C与电脑传输数据和快充取电功能

快充是由充电器端的充电协议和设备端的取电协议进行握手通讯进行协议识别来完成的,当充电器端的充电协议和设备端的取电协议握手成功后,设备会向充电器发送电压请求,充电器会根据设备的需求发送合适的电压给设备快速供电。 设备如何选择快充…

变量在template里不好使,在setup好使?

问题: 自定义的一个函数 ,import导入后 setup里面使用正常 ,在template里面说未定义 作用域问题 在 Vue 的模板语法中,模板(template )里能直接访问的是组件实例上暴露的属性和方法。从代码看&#xff0c…

OpenCV 图形API(53)颜色空间转换-----将 RGB 图像转换为灰度图像函数RGB2Gray()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将图像从 RGB 色彩空间转换为灰度。 R、G 和 B 通道值的常规范围是 0 到 255。生成的灰度值计算方式如下: dst ( I ) 0.299 ∗ src…

Trae+DeepSeek学习Python开发MVC框架程序笔记(四):使用sqlite存储查询并验证用户名和密码

继续通过Trae向DeepSeek发问并修改程序,实现程序运行时生成数据库,用户在系统登录页面输入用户名和密码后,控制器通过模型查询用户数据库表来验证用户名和密码,验证通过后显示登录成功页面,验证失败则显示登录失败页面…

超详细mac上用nvm安装node环境,配置npm

一、安装NVM 打开终端,运行以下命令来安装NVM: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash 然后就会出现如下代码: > Profile not found. Tried ~/.bashrc, ~/.bash_profile, ~/.zprofile, ~/.…