JSON 数据格式

发布时间:2026/7/25 17:33:35

JSON 数据格式
JSON 数据格式从入门到实战JSONJavaScript Object Notation是一种轻量级的数据交换格式易于人类阅读和编写也易于机器解析和生成。它基于 JavaScript 的子集但因其语言无关性被广泛应用于前端与后端、不同系统间的数据通信。本文将从实战角度出发通过大量代码示例带你全面掌握 JSON 的核心概念、操作技巧和常见应用场景。## 为什么选择 JSON在 Web 开发中数据交换格式如 XML、YAML 和 JSON 并存但 JSON 凭借简洁的语法和高效的解析速度成为事实标准。例如一个简单的用户数据在 JSON 中表示为json{ name: Alice, age: 30, isActive: true, hobbies: [reading, coding]}相比之下XML 需要更多标签而 JSON 的键值对结构更直观。此外JavaScript 原生支持 JSON无需额外库即可解析这使得它在前端开发中如鱼得水。## JSON 语法基础JSON 的语法规则简单明了- 数据由键值对组成键必须用双引号括起来。- 值可以是字符串、数字、布尔值、数组、对象或null。- 对象用花括号{}包裹数组用方括号[]包裹。- 键值对之间用逗号分隔末尾不能有逗号。### 常见错误示例json// 错误键未使用双引号{name: Bob}// 错误字符串使用单引号{city: New York}// 正确格式{name: Bob, city: New York}## 实战演示Python 操作 JSONPython 提供了内置的json模块用于处理 JSON 数据。下面是一个完整的示例从解析到生成 JSON并处理常见的数据类型。### 代码示例 1解析和生成 JSONpythonimport json# 原始 JSON 字符串从 API 或文件获取json_str { users: [ {id: 1, name: Alice, email: aliceexample.com, score: 85.5}, {id: 2, name: Bob, email: bobexample.com, score: 92.0} ], total: 2, status: success}# 1. 解析 JSON 字符串为 Python 字典data json.loads(json_str)print(解析后的数据类型:, type(data)) # class dictprint(第二个用户的名字:, data[users][1][name]) # 输出: Bob# 2. 修改数据添加一个新用户new_user {id: 3, name: Charlie, email: charlieexample.com, score: 78.0}data[users].append(new_user)data[total] 3# 3. 将 Python 字典转换回 JSON 字符串带缩进格式化updated_json json.dumps(data, indent2, ensure_asciiFalse)print(更新后的 JSON:\n, updated_json)# 4. 写入到文件with open(users.json, w, encodingutf-8) as f: json.dump(data, f, indent2, ensure_asciiFalse)print(数据已写入 users.json 文件)运行结果控制台会显示更新后的 JSON 结构并生成一个名为users.json的文件。注意ensure_asciiFalse确保中文或其他非 ASCII 字符正常显示。## 实战演示前端 JavaScript 处理 JSON前端开发中JSON 常用于 API 数据交互。以下示例演示如何从服务器获取 JSON 并渲染到网页上。### 代码示例 2使用 JavaScript 加载和渲染 JSONhtml!DOCTYPE htmlhtmlhead titleJSON 数据展示/title/headbody h2用户列表/h2 div iduser-list/div script // 模拟从服务器获取的 JSON 数据 const jsonData { users: [ { id: 1, name: Alice, age: 25, skills: [JavaScript, Python] }, { id: 2, name: Bob, age: 30, skills: [Java, SQL] }, { id: 3, name: Charlie, age: 28, skills: [C, Go] } ] }; // 1. 解析 JSON 字符串为 JavaScript 对象 const data JSON.parse(jsonData); console.log(解析后的对象:, data); // 2. 动态生成 HTML 内容 const container document.getElementById(user-list); let html ul; data.users.forEach(user { html li strong${user.name}/strong (年龄: ${user.age})br 技能: ${user.skills.join(, )} /li; }); html /ul; container.innerHTML html; // 3. 将 JavaScript 对象转换为 JSON 字符串并显示 const jsonString JSON.stringify(data, null, 2); console.log(转换回 JSON 字符串:\n, jsonString); document.body.innerHTML pre${jsonString}/pre; /script/body/html运行效果打开页面后会显示一个用户列表每个用户包含姓名、年龄和技能信息。页面底部还会打印出格式化后的 JSON 字符串。这个例子展示了 JSON 在前后端数据传递中的核心作用。## 高级应用JSON Schema 验证当 JSON 数据来自不可信源时验证其结构至关重要。JSON Schema 是一种描述 JSON 数据结构的规范类似于 XML Schema。以下是一个简单的 Python 验证示例pythonimport jsonfrom jsonschema import validate, ValidationError# 定义 JSON Schemaschema { type: object, properties: { name: {type: string, minLength: 1}, age: {type: integer, minimum: 0, maximum: 150}, email: {type: string, format: email}, hobbies: {type: array, items: {type: string}} }, required: [name, age]}# 待验证的数据valid_data {name: Alice, age: 30, email: aliceexample.com, hobbies: [reading]}invalid_data {name: , age: 200, hobbies: [123]} # 错误name 空age 超范围hobbies 元素类型错误try: validate(instancevalid_data, schemaschema) print(valid_data 验证通过)except ValidationError as e: print(valid_data 验证失败:, e.message)try: validate(instanceinvalid_data, schemaschema) print(invalid_data 验证通过)except ValidationError as e: print(invalid_data 验证失败:, e.message)输出invalid_data会触发ValidationError提示age超出最大值或name长度不足。这在构建 API 接口时非常有用可以提前拦截格式错误的数据。## 总结JSON 凭借其简洁性、跨语言支持和原生 JavaScript 集成成为现代 Web 开发中不可或缺的数据交换格式。通过本文的实战示例你学会了- JSON 的基本语法和常见陷阱。- 使用 Python 解析、修改和生成 JSON 数据并写入文件。- 在前端用 JavaScript 处理 JSON动态渲染页面内容。- 利用 JSON Schema 进行数据验证保证数据可靠性。在实际项目中建议始终使用json.dumps()的indent参数格式化输出并开启ensure_asciiFalse以支持国际化字符。对于复杂系统结合 JSON Schema 能显著降低数据错误带来的风险。掌握 JSON就是掌握数据流通的“通用语言”。

相关新闻

解锁Chrome内置AI:本地运行Gemini Nano,零延迟隐私保护

解锁Chrome内置AI:本地运行Gemini Nano,零延迟隐私保护

2026/7/25 17:33:35

你是否遇到过这样的场景:在浏览器里打开十几个标签页,每个页面都想用 AI 总结一下,或者快速翻译一段外文,结果要么得手动复制粘贴到某个 AI 工具,要么就得忍受网络延迟和隐私担忧?又或者,你开发的 Web 应用想集成 AI 功能,却苦于服务器成本、网络延迟和用户隐私的平衡难…

【信息科学与工程学】【通信工程】第七十三篇 分组网络中服务质量保障的算法 21

【信息科学与工程学】【通信工程】第七十三篇 分组网络中服务质量保障的算法 21

2026/7/25 17:33:35

射频计算算法建模:逐步推理的数学方程式,融合几何、拓扑、空间几何、矢量分析、代数、数论、离散数学、信息论、运筹学、计算机图形图像等方法。 计算机体系架构中的数据结构与算法:如队列、堆、图、树、哈希表、排序、搜索、动态规划、贪心、分治、回溯等,并说明其在系统…

大模型评估实战:小白程序员必备的收藏级教程!掌握核心指标与优化策略

大模型评估实战:小白程序员必备的收藏级教程!掌握核心指标与优化策略

2026/7/25 17:33:35

本文从检索质量、生成质量和端到端效果三个层面,详细解析了大模型的评估方法与指标体系。文章介绍了RAGAS、LLM-as-Judge等多种评估手段,并提供了构建评测集、自动化评估框架对比等实用指南。此外,还分享了检索与生成优化的决策树和速查表&am…

5分钟掌握LibreHardwareMonitor:免费开源的电脑硬件监控专家

5分钟掌握LibreHardwareMonitor:免费开源的电脑硬件监控专家

2026/7/25 18:33:37

5分钟掌握LibreHardwareMonitor:免费开源的电脑硬件监控专家 【免费下载链接】LibreHardwareMonitor Libre Hardware Monitor is free software that can monitor the temperature sensors, fan speeds, voltages, load and clock speeds of your computer. 项目地…

从LLM到VLA:多模态AI的技术演进与应用实践

从LLM到VLA:多模态AI的技术演进与应用实践

2026/7/25 18:33:37

1. 技术演进全景图:从文本到多模态的智能跃迁2017年Transformer架构的诞生,犹如在AI领域投下一颗深水炸弹。当时谁也没想到,这个最初用于机器翻译的模型,会在短短数年内催生出改变人机交互方式的三大技术分支。如今当我们谈论LLM&…

基于Agentic RAG构建自检式知识问答系统:从原理到工程实践

基于Agentic RAG构建自检式知识问答系统:从原理到工程实践

2026/7/25 18:33:37

在构建企业级知识问答系统时,你是否遇到过这样的困境:用户一个看似简单的业务问题,背后却需要串联多个数据源的信息。传统RAG(检索增强生成)模型往往“一锤子买卖”,单次检索后就直接生成答案,一…

空调如何实现超省电?从能效比、变频技术到选购使用全解析

空调如何实现超省电?从能效比、变频技术到选购使用全解析

2026/7/25 18:33:37

在实际家庭或办公环境中,空调作为长期运行的高能耗电器,其耗电量是用户选购时最核心的考量因素之一。面对市场上琳琅满目的“省电”、“节能”宣传,如何拨开营销迷雾,从技术原理、产品参数和实际使用习惯出发,选择一台…

思源宋体完整指南:7种粗细免费开源字体终极教程

思源宋体完整指南:7种粗细免费开源字体终极教程

2026/7/25 18:33:37

思源宋体完整指南:7种粗细免费开源字体终极教程 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为中文设计寻找专业又免费的字体吗?思源宋体(So…

【单片机毕业设计推荐】基于 51/STM32 单片机的水质水温监测与声光报警系统设计,基于 51/STM32 单片机的 TDS 水质与水温智能监测装置设计(018103)

【单片机毕业设计推荐】基于 51/STM32 单片机的水质水温监测与声光报警系统设计,基于 51/STM32 单片机的 TDS 水质与水温智能监测装置设计(018103)

2026/7/25 18:23:37

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能基础功能核心功能辅助功能技术路线项目演示关于我们项目案例源码获取温馨提示:本人主页置顶文章(点我)有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/25 6:25:13

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/24 19:29:25

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/25 9:26:35

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

挑战一天速通Spring全家桶!

挑战一天速通Spring全家桶!

2026/7/25 0:02:22

不知道各位Java好大哥们闲的时候会不会去关注Spring目前的官网,你会发现他的slogan是: Spring makes Java Simple。它让Java的开发变得更加简单。某种意义上来说:是Spring成就了Java!但随之而来的就是:由他之后诞生出来的各种组件…

挑战一天速通Java高并发!

挑战一天速通Java高并发!

2026/7/25 0:02:22

有出去面试的朋友肯定深有感受,像我们刚入行那会面试的加分项现在卷得已经成为了面试的基础题(手动狗头)。其中最典型的就属这个Java并发编程了。之前一般只有大厂才会有高并发编程相关的面试内容,但现在只要你入了Java行业就会涉…

从暴雪到米哈游都在用的平衡性评估框架,深度拆解LSTM+胜率归因分析法(附开源工具链)

从暴雪到米哈游都在用的平衡性评估框架,深度拆解LSTM+胜率归因分析法(附开源工具链)

2026/7/25 0:02:22

更多请点击: https://kaifayun.com 第一章:AI 游戏平衡性分析 现代游戏开发中,AI 不再仅用于控制 NPC 行为,更被深度整合进游戏平衡性调优流程。通过强化学习与对抗性仿真,AI 可以在数百万局对局中自动识别数值失衡点…