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,零延迟隐私保护

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

2026/7/25 17:33:24 阅读更多 →
Unity游戏实时翻译插件XUnity.AutoTranslator:5分钟部署与深度配置指南

Unity游戏实时翻译插件XUnity.AutoTranslator:5分钟部署与深度配置指南

1. 项目概述:为什么你的Unity游戏需要智能实时翻译?如果你是一名独立游戏开发者,或者正在运营一款面向全球玩家的Unity游戏,那么“语言壁垒”绝对是你最不想面对,却又无法绕开的难题。想象一下,你的游戏在S…

2026/7/25 17:32:24 阅读更多 →
Unity IL2CPP下自动翻译插件兼容性解决方案

Unity IL2CPP下自动翻译插件兼容性解决方案

1. 项目概述:当自动翻译插件遇上IL2CPP如果你正在开发一款面向全球市场的Unity游戏,那么集成一个自动翻译插件(比如I2 Localization、Lunar Unity Translator,或者一些基于Google/Microsoft翻译API的自研方案)几乎是必…

2026/7/25 17:32:24 阅读更多 →

最新新闻

扣子×飞书×钉钉三端打通的文件机器人方案(内部泄露版):仅开放至本周五

扣子×飞书×钉钉三端打通的文件机器人方案(内部泄露版):仅开放至本周五

更多请点击: https://codechina.net 第一章:扣子文件处理机器人概述 扣子(Coze)平台提供的文件处理机器人能力,使开发者能够快速构建支持上传、解析、转换与结构化输出的自动化工作流。该机器人并非独立运行的服务&am…

2026/7/25 17:43:29 阅读更多 →
Agentic AI在公益领域的应用与实践

Agentic AI在公益领域的应用与实践

1. 项目概述:当AI架构师遇上公益需求去年夏天,我参与了一个为偏远山区儿童提供教育资源的非营利项目。当看到志愿者们手动整理上千份学习需求表格时,我突然意识到:这不正是AI代理(Agentic AI)能够大显身手的…

2026/7/25 17:43:29 阅读更多 →
为什么你的AI音乐总像“罐头音”?5个录音棚级频谱校准步骤,30分钟内重塑空间感与临场感

为什么你的AI音乐总像“罐头音”?5个录音棚级频谱校准步骤,30分钟内重塑空间感与临场感

更多请点击: https://codechina.net 第一章:为什么你的AI音乐总像“罐头音”?——频谱失真与空间建模的本质断层 AI生成音乐常被诟病缺乏“呼吸感”与“现场性”,其根源并非算力不足或数据量不够,而在于模型对声学物…

2026/7/25 17:43:29 阅读更多 →
RAG系统性能优化:从8秒到1秒的实战经验

RAG系统性能优化:从8秒到1秒的实战经验

1. RAG系统性能优化全景解析在信息检索领域,RAG(Retrieval-Augmented Generation)系统已经成为连接海量知识库与自然语言生成的关键桥梁。去年我接手的一个企业知识库项目中,初始版本的首字响应时间高达8秒,经过系统化…

2026/7/25 17:43:29 阅读更多 →
AI工具如何提升计算机科学论文写作效率

AI工具如何提升计算机科学论文写作效率

1. 论文写作效率革命:AI工具如何改变学术创作去年帮导师审阅研究生论文时,我发现一个有趣现象:那些能按时提交优质论文的学生,往往都在用智能写作工具辅助创作。这让我开始系统性研究AI写作工具在学术领域的应用现状。经过半年实测…

2026/7/25 17:43:29 阅读更多 →
如何用ExplorerPatcher免费恢复Windows 10经典界面:完整配置指南

如何用ExplorerPatcher免费恢复Windows 10经典界面:完整配置指南

如何用ExplorerPatcher免费恢复Windows 10经典界面:完整配置指南 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 厌倦了Windows 11…

2026/7/25 17:42:28 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 5:08:22 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 5:13:53 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻