【JSON小白篇】数据交换的通用语言—JSON

使用 Python 和可视化编程控制树莓派机械臂myCobot 这些模块包括逻辑、循环、数学、文本、列表、颜色、变量、函数以及控制机械臂的函数等等,所以用户可以轻松入门编程,只需单击右上角的运行就可以启动程序,做一些有趣的应用。可以搭配任意摄像头进行图像识别,具有4个 USB 端口,可以通过 Raspberry Pi 的微型 HDMI 端口连接到显示器. 最后,40 个GPIO 接头可以进行更多扩展应用,机械臂每个接口都有清晰的标记,面板上还有一个电源开关和一个直流电源插孔。您现在可以将机器人放在地板或桌子上,并用力拧紧吸盘,以确保机械臂的底座在操作过程中不会移动。 阅读详情

json的实战用法可以参考:【JSON Python篇】通过代码操作 JSON
在这里插入图片描述

​ 不管你用什么语言写后端,前端发过来的数据大概率长这样:{"username": "zhangsan", "password": "123456"}。这就是 JSON。

​ 打开任何一个 Web API 的文档,请求和响应的格式几乎都是 JSON。配置文件是 JSON,数据库里存的结构化文本是 JSON,前后端之间传来传去的还是 JSON。这篇把 JSON 格式本身讲清楚:它是什么、有哪些规则、为什么它成了事实标准。

一、JSON介绍

1.1 JSON是什么

​ JSON(JavaScript Object Notation)是一种纯文本格式,用来表示结构化数据。长这样:

{
  "name": "zhangsan",
  "age": 28,
  "skills": ["Python", "Flask"],
  "active": true
}

​ 虽然名字里带 JavaScript,它确实是 2001 年从 JS 语法里提炼出来的,但今天它早就不是任何语言的专属了。Python 有 json 模块,Java 有 Gson/Jackson,Go 有 encoding/json,Rust 有 serde_json……几乎所有主流语言都内置或有成熟的 JSON 支持。

​ JSON 的全部内容就写在一页纸就够的规范里(json.org),这种极简是它能成为通用格式的根本原因。

1.2 语法规则:只有六种类型

​ JSON 的数据类型只有六种,记住这张表就掌握了全部语法:

类型示例说明
string"hello"必须用双引号,不能用单引号
number42, 3.14, -1整数或浮点数,不支持 0x、NaN、Infinity
booleantrue, false全小写,不是 True/False
nullnull表示"没有值",不是 None、不是 nil
array[1, "two", true]有序列表,元素可以是任意类型
object{"key": "value"}键值对集合,键必须是双引号字符串

​ 整个 JSON 世界就建立在这六块积木上。没有日期类型、没有二进制类型、没有注释,这些"缺失"是刻意为之的设计选择,后面会讲为什么。

​ 一个完整的例子,六种类型全覆盖:

{
  "user_id": 1,
  "username": "zhangsan",
  "email": null,
  "active": true,
  "scores": [95, 87, 92],
  "profile": {
    "bio": "Backend developer",
    "years": 3
  }
}

​ object 和 array 可以任意嵌套,所以 JSON 能表达很复杂的数据结构。但每个叶子节点最终都是 string、number、boolean 或 null。

二、JSON规则

​ JSON 语法很宽松,但有几条铁律不能违反,违反了解析器会直接报错:

2.1 键必须是双引号字符串

错误 ❌  {name: "zhangsan"}
错误 ❌  {'name': "zhangsan"}
正确 ✅  {"name": "zhangsan"}

​ 这是和 JavaScript 对象字面量的最大区别。JS 里键可以不加引号,JSON 里不行。

2.2 字符串必须用双引号

错误 ❌  {'name': 'zhangsan'}
正确 ✅  {"name": "zhangsan"}

​ 单引号在 JSON 里不合法。写 Python 的人特别容易踩这个坑,Python 里单双引号等价,JSON 里只认双引号。

2.3 尾部不能有逗号

错误 ❌  {"name": "zhangsan", "age": 28,}
正确 ✅  {"name": "zhangsan", "age": 28}

​ 最后一个元素后面不能有逗号。很多语言(JavaScript、Python、Go)都允许尾逗号,但 JSON 不行。

2.4 不能有注释

​ JSON 不支持任何形式的注释:没有 //,没有 /* */,没有 #。

​ 这是 JSON 发明者 Douglas Crockford 的刻意决定。他认为注释会导致解析复杂化和滥用(比如把处理指令藏在注释里)。如果你需要带注释的配置文件,可以用 JSONC(VS Code 在用的格式)、YAML 或 TOML。

2.5 顶层必须是一个值

​ 一个合法的 JSON 文档,顶层必须是上面六种类型之一。最常见的是 object {} 或 array [],但一个单独的 "hello"、42、true、null 也是合法的 JSON。

三、两种风格:紧凑 vs 格式化

​ 同一份数据可以有两种写法,含义完全相同。

在这里插入图片描述

3.1 紧凑风格

​ 一行搞定,没有多余空白:

{"user_id":123,"name":"zhangsan","role":"user"}

3.2 格式化风格

​ 有缩进和换行,人眼友好:

{
  "user_id": 123,
  "name": "zhangsan",
  "role": "user"
}

​ JSON 规范不关心空白,解析器看到 {"user_id":123} 和 { "user_id" : 123 } 认为是完全一样的数据。但空白会影响文本内容本身,这在某些场景很关键。

​ 比如对 JSON 文本做哈希或 Base64 编码时,同一个 object,紧凑格式和带空格的格式算出来的结果完全不同。多一个空格,编码就对不上。

3.3 什么时候用哪种?

​ 读者是机器就紧凑,读者是人就格式化。

场景选哪种原因
API 请求/响应体紧凑省带宽,客户端收到后自己解析,不需要好看
存进 Redis / 数据库紧凑十万条数据,每条多几个空格就是几 MB 内存
签名、哈希、Base64 编码紧凑多一个空格结果就变了,格式必须固定
package.json 等配置文件格式化要用编辑器打开手动改,不好看就没法维护
日志输出格式化线上排查问题时需要快速肉眼定位字段
调试时 print 出来看格式化紧凑的一坨字符串根本读不动

四、JSON 为什么赢了

​ 在 JSON 之前,数据交换的主流格式是 XML:

<user>
  <name>zhangsan</name>
  <age>28</age>
  <skills>
    <skill>Python</skill>
    <skill>Flask</skill>
  </skills>
  <active>true</active>
</user>

​ 同样的数据,用 JSON:

{
  "name": "zhangsan",
  "age": 28,
  "skills": ["Python", "Flask"],
  "active": true
}

​ 差别一目了然:

JSONXML
可读性接近自然语言标签噪音大
体积紧凑开闭标签占大量空间
解析速度快(结构简单)慢(需要处理属性、命名空间等)
数据类型原生区分 string/number/boolean全是字符串,类型靠约定
学习成本5 分钟需要理解 DTD、Schema、XPath…

​ XML 不是没有优势,它支持注释、命名空间、混合内容(文本和标签穿插),在文档标记领域(HTML 就是 XML 的近亲)依然无可替代。但对于"两个程序之间传结构化数据"这个场景,JSON 用更少的字符做到了同样的事。

​ 2005 年之后,随着 AJAX 和 REST API 的普及,JSON 迅速取代 XML 成为 Web API 的事实标准。今天你打开任何一个公开 API 的文档,返回格式几乎都是 JSON。

五、JSON 在哪里

​ JSON 不是某一个环节的专属工具,它渗透在整个技术栈里。从用户点击按钮到数据落盘,中间流转的大概率都是 JSON。

​ 知道了语法,再看看你日常开发中哪些地方其实已经在跟 JSON 打交道了,可能比你想的多得多。

5.1 API:前后端之间的普通话

​ 你用浏览器登录一个网站,点击"登录"按钮,浏览器发出去的请求体长这样:

{"username": "zhangsan", "password": "123456"}

​ 服务器处理完,返回的响应体也是 JSON:

{"code": 200, "message": "登录成功", "token": "eyJhbGciOi..."}

​ 这就是 REST API 的日常,请求是 JSON,响应也是 JSON。打开 GitHub、微信、支付宝的开放平台文档,接口格式清一色都是它。

5.2 配置文件:程序的"说明书"

​ 用过 VS Code 的都见过 settings.json;写过前端项目的都改过 package.json;用 TypeScript 就有 tsconfig.json。这些配置文件选 JSON 的原因很简单:结构清晰、所有语言都能解析、不需要额外装库。

{
  "name": "my-project",
  "version": "1.0.0",
  "scripts": {
    "dev": "vite",
    "build": "vite build"
  }
}

​ 不过 JSON 不支持注释这一点在配置场景里确实不方便,所以 VS Code 实际用的是 JSONC(JSON with Comments),tsconfig.json 也允许注释。严格来说它们不是标准 JSON,但解析器做了兼容。

5.3 数据库:不只是关系型的世界

​ MongoDB 整个数据模型就建立在类 JSON 的文档结构上,存进去的每条数据就是一个 JSON object。PostgreSQL 有专门的 jsonb 字段类型,可以直接在 SQL 里查询 JSON 内部的键值。Redis 的值是字符串,实际项目中存的往往就是 JSON 序列化后的结果。

-- PostgreSQL:直接查 JSON 里的字段
SELECT data->>'username' FROM users WHERE data->>'role' = 'admin';

5.4 日志:给机器看的也是 JSON

​ 传统日志是一行行自由文本,人能读但机器很难解析。现代日志系统(ELK、Loki、CloudWatch)越来越多地采用结构化日志,每条日志就是一个 JSON object:

{"timestamp": "2026-03-26T08:30:00Z", "level": "ERROR", "service": "auth", "message": "token expired", "user_id": 123}

​ 好处是显而易见的:可以按 level 过滤、按 service 聚合、按 user_id 追踪,不需要写正则去文本里"捞"信息。

六、总结

  • JSON 是纯文本格式,只有六种数据类型:string、number、boolean、null、array、object
  • 键必须用双引号字符串、尾部不能有多余逗号、不能含注释,规则少但严格
  • 紧凑和格式化两种风格,含义相同,但文本内容不同(影响编码和签名)
  • 它赢了 XML,因为更简单、更轻量、解析更快
  • 在 Web 开发中,JSON 不是某个具体技术的附属,而是数据交换的通用语言

​ 知道了 JSON 是什么,下一步就是用代码操作它,怎么把程序里的数据结构转成 JSON 字符串、怎么把 JSON 字符串解析回来。

eNSP-抓包解析TCP三次握手和四次挥手的过程 一、环境搭建 1.设备连接 2.服务器配置 3.客服端配置 二、抓包测试 1.打开抓包软件 2.客户端获取数据 三、抓包结果 阅读详情

相关推荐

DINOv3实战指南:如何利用零样本视觉模型革新工业质检

本文详细介绍了如何利用DINOv3零样本视觉模型革新工业质检流程。通过无需标注数据的自监督学习技术,DINOv3能快速部署高精度检测系统,显著降低成本和提升效率。文章涵盖模型选型、数据准备、实时检测优化及典型行业解决方案,为工业质检提供革命性AI实践指南。

ansible6ops的博客 123

JSON是什么?如何正确理解?

1.背景介绍 什么是JSON JSON (JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。——...

阿嚏乱码的地方 6万+

滤波算法-呼吸心跳信号检测方法(四)

呼吸心跳信号检测系列文章:信号滤波处理

yjh_2019的博客 6269

一文读懂 JSON 格式:数据交换的通用语言核心规则

JSON 的核心规则简单而强大:基于键值对结构,支持六种数据类型,并强制语法严格性。掌握这些规则(如键必须双引号、值类型有限),你就能轻松读写 JSON 数据,实现高效的数据交换。作为“通用语言”,JSON 在互联网时代无处不在——从手机 App 到云端服务,都依赖于它的可靠性和简洁性。赶紧动手试试,用 JSON 构建你的数据吧!

tggchjhjsjss的博客 969

ESP32C3的I2S接口详解:以驱动PCM5102A为例,避开时序与配置的那些坑

本文深入解析ESP32C3的I2S接口驱动PCM5102A DAC的完整解决方案,涵盖时序对齐、PCB优化和寄存器级配置。通过实际案例分享时钟树分析、信号完整性设计和底层调试技巧,帮助开发者避开常见陷阱,实现高质量音频输出。重点探讨了I2S协议栈、电源滤波优化及DMA传输异常处理等关键技术要点。

weixin_30254435的博客 299

基于Coze平台从零构建AI智能体:以测试用例生成为例的实战指南

在人工智能技术快速发展的今天,大语言模型(LLM)和提示词工程(Prompt Engineering)已成为构建智能应用的核心技术。其原理在于通过自然语言指令引导模型完成特定任务,其技术价值在于极大地降低了AI应用开发的门槛,使非专业开发者也能快速实现想法。这一技术广泛应用于自动化办公、智能客服、内容生成等场景。本文聚焦于字节跳动旗下的Coze平台,该平台通过可视化工作流编排和预置技能,将上述技术封装为易用的工具。文章以“根据产品需求文档(PRD)自动生成测试用例”这一具体场景为例,详细拆解了从需求分析、工

weixin_30617695的博客 337

JSON 现代数据交换的利器

JSON (JavaScript object Notation) 是一种轻量级的数据交换格式,具有易读易写的特点。它由键值对组成,并且支持嵌套、数组等复杂的数据结构

m0_74995879的博客 2609

Autosar Os降低CPU负载的方案总结

由于各个项目的实际场景不尽相同,可能需要有针对性的对症优化。如果你还有别的一些优化手段欢迎留言交流。

3677

深度解析 JSON:数据交换的通用语言(建议收藏备用)

json

2401_83606346的博客 1026

动态对抗Zygisk-IL2CppDumper:Unity游戏安全新策略

本文深入探讨了对抗Zygisk-IL2CppDumper攻击的Unity游戏安全新策略。通过实时内存监控、动态混淆技术和异常行为检测体系,有效防止关键代码被动态提取。文章详细介绍了内存指纹系统、运行时混淆方案和五维特征模型等实用防御手段,帮助开发者提升游戏安全性。

weixin_29325955的博客 306

如何打开本地网络的防火墙端口(Windows版)解决ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。问题

ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。 最开始在遇到这个报错的时候十分不解,后来经过思考,有可能是服务器端口占用,或者并没有放行。因此搜查问题的关键是要先去排查问题。 在搜索栏输入控制面板 选择防火墙 选择开关 保证这些选项是开着的 选择高级设置 新建规则 创建协议端口 选择端口 允许连接 点击下一步 创建规则后点击下一步(后命名) 选择任意端口ALL即可 问题排查完毕!socket创建网络通信时,有读者

weixin_46900108的博客 9万+

深入解析JSON:数据交换的通用语言

在这篇文章中,我们将深入探讨JSON的起源、结构、优势以及如何在现代软件开发中有效地使用它。然而,由于其简洁和易于阅读的特性,JSON很快超越了JavaScript的范畴,成为了一种广泛支持的数据格式。它使用键值对来表示数据,其中键是字符串,值可以是字符串、数字、数组、布尔值、另一个JSON对象或者null。例如,使用RESTful API时,HTTP请求的响应通常包含JSON格式的数据。虽然JSON不是传统的数据库格式,但它在某些场景下可以作为数据存储的替代方案。

apple_64847327的博客 999

CAPL编程规范与最佳实践

通过本文的学习,读者应该对CAPL编程规范与最佳实践有了初步的了解,并能够编写高质量的CAPL脚本。在实际项目中,CAPL的应用非常广泛,希望读者能够通过不断的学习和实践,掌握更多的CAPL技巧,提高自己的开发能力。

闲人编程的博客 1747

深入浅出JSON:现代数据交换的基石

JSON是一种轻量级的数据交换格式,它基于JavaScript的一个子集,采用完全独立于语言的文本格式来存储和表示数据。JSON由Douglas Crockford在2001年推广,并在2006年成为ECMA国际标准(ECMA-404)。JSON以其简洁性和易用性赢得了开发者的广泛喜爱,成为现代数据交换的事实标准。掌握JSON不仅对前端开发至关重要,也是全栈开发、API设计等领域的基础技能。随着技术的发展,JSON生态系统仍在不断丰富,值得我们持续关注和学习。

2503_91041226的博客 2329

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JSON完全指南:Python中的数据交换通用语言

JSON完全指南:Python中的数据交换通用语言

jsnpG的博客 1214

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

数据交换格式之XML和JSON

学习知识点XML和JSON一、什么是数据交换格式客户端与服务器常用数据交换格式xml、json、html二、数据交换格式应用场景移动端(安卓、IOS)通讯方式采用http协议+JSON格式走restful风格。很多互联网项目都采用Http协议+JSON因为xml比较重WebService服务采用http+xml格式银行项目使用比较多三、JSON简单使用 3.1、什么是JSON?JSON(JavaS...

coderWang 6475

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

JSON数据格式:数据交换的通用语言

JSON是一种基于文本的数据表示格式,它借鉴了JavaScript中对象字面量的语法,但又独立于任何编程语言。JSON对象由键值对(key-value pairs)构成,键名(key)必须是字符串,而值(value)可以是字符串、数字、布尔值、数组、对象或null。JSON的简洁性和灵活性使得它成为了一种理想的数据交换格式。

Json_18179014480的博客 460

JSON:数据交换格式

JSON是一种轻量级数据交换格式,具有简洁、跨语言的特点。它支持字符串、数字、布尔值、数组、对象和null六种数据类型,语法规则简单易学。JSON广泛应用于前后端交互、配置文件和微服务通信等场景。主流语言都提供JSON处理工具,如JavaScript的JSON对象、Java的Jackson和Python的json模块。使用JSON时需注意格式规范、控制嵌套深度、处理特殊数据类型等问题。JSON凭借简单性和通用性成为现代软件开发中不可或缺的数据格式。掌握JSON语法规则和常用工具,能够有效提升开发效率。

m0_73884648的博客 1321

数据交换格式(XML和JSON)

数据交换格式,就是服务器端与客户端之间进行数据传输与交换的格式。 前端领域,经常提及的两种数据交换格式分别是XML和JSON。

super码力的博客 1897

JSON——IT技术人员都必须要了解的一种数据交换格式

JSON作为目前Web主流的数据交换格式,是每个程序员&数据分析师等都必须要了解的一种数据交换格式。尤其是在当下Ajax和REST技术的流行,JSON无疑成为了数据交换格式的首选! 今天大家和猪哥一起来学习一下JSON的知识吧! 一、XML 在讲JSON之前,我觉得有必要先带大家了解一下XML(Extensible Markup Language 可扩展标记语言)。 1.XML起源 早起W...

猪哥 2513

基于API和JSON的API数据交换:如何在API和JSON下实现高效、可靠的数据交换

近年来,随着云计算、大数据、物联网等技术的飞速发展,越来越多的人开始关注数字化转型。在这种转型过程中,企业需要掌握自身的信息资产及其价值,进行信息数据的收集整理、分析和应用。但是由于各种限制和禁忌,包括对数据的保密性和安全要求、对数据获取方式的限制等,导致很多企业无法轻易地获取到数据。为了解决这个问题,云服务商提供的API(Application Programming Interface)逐渐成为越来越多公司获取数据的主要途径。企业可以通过注册并申请API接口,来获取到数据。

AI天才研究院 2416

xml的数据交换以及xml和json数据交换的比较

一、什么是Web Service ? Web Services 是有企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过internet来访问并使用这项在线服务二、关键的技术和规则1、WebService时,主要用到以下几个关键的技术和规则:a)、XML:描述数据的标准方法b)、SOAP:表示信息交换的协议(Simple Object Access Protocol) ...

Kobe Bryant 3432

Python 中的 JSON:跨语言、跨平台的通用数据交换格式

所以只要把数据转成 JSON 字符串,任何一端都能“看懂”。于是需要一个“通用语言”来当翻译——这个通用语言,就是。结合你笔记里的文件操作,JSON 最常见的用法就是。,下次启动能重新读回来——这就是“数据持久化”。每种语言都有自己的对象/数组/结构体,这样即使程序关闭,数据也。注意:JSON 里的。,Python 里是。Python 内置了。写程序时,我们经常要。

m0_71346764的博客 101

XML和JSON两种数据交换格式的比较

目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信每一个web developer都不会感到陌生; 相比之下,JSON可能对于一些新步入开发领域的新手会感到有些陌生,也可能你之前已经听说过,但对于XML和 JSON的不同之处可能会不怎么了解。对于在 Ajax开发中,是选择XML还是JSON,一直存在着争议,个人还是比较倾向于JSON的,虽然JSON才处于起步阶段,但我相信

selfimpr 1068

异步通信技术AJAX | 基于JSON、XML的数据交换

异步通信技术AJAX | 基于JSON、XML的数据交换

m0_61933976的博客 1454

JSON - 一个很重要的数据交换格式

相遇不易,且行且珍惜~ 文章目录前言JSON是什么?简要历史JSON 语法1.构造符2.常用类型3.和 XML 的比较总结 前言 你要偷偷变优秀,然后惊艳所有人! 提示:以下是本篇文章正文内容,下面案例可供参考 JSON是什么? JSON (JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON.

Here_ss的博客 832
上一篇: [Token]JWT 实战:PyJWT的基本使用
下一篇: 【JSON Python篇】通过代码操作 JSON
未收敛
博客等级 码龄11年 3309粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未收敛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值