当前位置: 首页 > news >正文

JSON介绍

JSON 的核心特点​

  1. ​易读易写​​:纯文本格式,结构清晰(像“键值对”的集合)。
  2. ​通用性强​​:任何语言都能解析或生成 JSON。
  3. ​用途广泛​​:常用于前后端数据传输、配置文件、API 接口等。

📦 ​​JSON 的常见场景​

  • ​前后端通信​​:前端发送数据给服务器,或接收服务器的数据。
    // 前端发送给服务器的登录请求数据
    {
      "username": "user123",
      "password": "​**​​**​​**​"
    }
  • ​配置文件​​:比如 VS Code 的 settings.json
  • ​存储简单数据​​:替代复杂的 XML 格式。

🛠️ ​​JSON 的语法规则​

  1. ​数据以键值对表示​​:"键": 值

    • 键必须用​​双引号包裹​​(单引号不行!)。
    • 值可以是:字符串、数字、布尔值、数组、对象、null
  2. ​数据类型示例​

    {
      "name": "小明",      // 字符串
      "age": 20,           // 数字
      "isStudent": true,   // 布尔值
      "hobbies": ["篮球", "音乐"],  // 数组
      "address": {         // 嵌套对象
        "city": "北京",
        "street": "中关村"
      },
      "score": null        // 空值
    }
  3. ​不可写注释​​:JSON 标准不允许添加注释(这点和代码不同!)。


⚡ ​​JSON vs JavaScript 对象​

  • ​JSON 是字符串​​:一种数据格式,不能直接执行。

  • ​JS 对象是内存中的结构​​:可以包含函数、变量等。

    // JS 对象(不需要双引号键)
    let user = { name: "小明", age: 20 };
    
    // JSON 字符串(必须用双引号)
    let jsonStr = '{"name": "小明", "age": 20}';

🔄 ​​JSON 的解析与生成​

  1. ​将 JSON 字符串转为 JS 对象​​:JSON.parse()

    let jsonStr = '{"name": "小明", "age": 20}';
    let user = JSON.parse(jsonStr);
    console.log(user.name); // 输出 "小明"
  2. ​将 JS 对象转为 JSON 字符串​​:JSON.stringify()

    let user = { name: "小明", age: 20 };
    let jsonStr = JSON.stringify(user);
    console.log(jsonStr); // 输出 '{"name":"小明","age":20}'

❗ ​​注意事项​

  1. ​严格语法​​:

    • 键必须用双引号包裹。
    • 末尾不能有多余的逗号(如 {"a":1,} 会报错)。
    • 字符串必须用双引号(单引号无效)。
  2. ​不支持特殊类型​​:

    • 不能存储函数、日期等对象(需转为字符串或数字)。

🛠️ ​​校验工具​

如果 JSON 格式出错,可以用在线工具检查:

  • JSONLint
  • JSON Formatter

🌰 ​​实际类比​

把 JSON 想象成一个​​快递箱​​:

  • 箱子外面贴了标签(键),比如 "收件人""重量"
  • 箱子里装了具体内容(值),比如 "小明"10kg
  • 快递员(程序)能快速读懂标签和内容,准确送达。
http://www.dtcms.com/a/111155.html

相关文章:

  • 免费送源码:Java+ssm+MySQL SpringBoot社区配送服务系统小程序 计算机毕业设计原创定制
  • OpenMinus 源码深度解析:从 React 模式到多智能体架构实现
  • 元宇宙浪潮下,前端开发如何“乘风破浪”?
  • OCR的备份与恢复
  • Nacos 如何管理配置版本?支持配置回滚吗?如何实现?
  • 栈回溯和离线断点
  • 2024第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
  • 4.4 代码随想录第三十五天打卡
  • 生活电子常识--删除谷歌浏览器搜索记录
  • 家里网络访问Github有时候打不开,解决办法
  • kotlin中const 和val的区别
  • 算法刷题记录——LeetCode篇(3.3) [第221~230题](持续更新)
  • Linux环境下内存错误问题排查与修复
  • Mysql 中 ACID 背后的原理
  • 状态机思想编程
  • 《微服务》概念详解
  • MINIQMT学习课程Day7
  • Github 2025-04-04Java开源项目日报 Top8
  • AIP-213 通用组件
  • 【动态规划】深入动态规划:连续子结构的算法剖析
  • 人工智能:RNN和CNN详细分析
  • 死锁(任务互相等待)
  • 无人机智慧路灯杆:智慧城市的‘全能助手’
  • 安当TDE透明加密:海量文件离线传输的安全方案
  • Linux(CentOS 7) 部署 redis 集群
  • 优化 Web 性能:处理屏幕外图片(Offscreen Images)
  • prism WPF 登录对话框登录成功后显示主界面
  • Objective-C语言的集合
  • Titanic - Machine Learning from Disaster
  • 在航电系统中提高可靠性的嵌入式软件设计