
什么是 JSONJSON 全称JavaScript Object Notation是一种跨平台通用轻量级文本数据格式用来存储、传输数据。特点所有编程语言都能看懂PHP/Java/Python/ 前端 JS 全都通用是现在前后端传数据的统一标准格式。键名必须用双引号包裹不能单引号数据之间用逗号分隔最后一项末尾不能加逗号支持 6 种数据类型字符串、数字、布尔、null、对象、数组标准 JSON 不能写注释JSON 用来干什么前后端接口传数据最主要用途登录、查询、提交数据统一用 JSON 收发配置文件网站配置、小程序配置都常用.json文件本地存储数据浏览器本地缓存、小程序缓存和普通文本、表单数据区别普通文字杂乱无章程序不好读取表单键值对只能简单传单个字段JSON结构清晰能一次性传递复杂多层数据程序自动解析与XML区别JSON 轻量、简洁、快 → 现代前后端交互首选XML 繁琐、笨重、扩展性强 → 老系统 / 企业专用特性JSONXML全称JavaScript 对象表示法可扩展标记语言语法键值对{key:val}极简自定义标签keyval/key繁琐体积无冗余字符体积小、传输快标签重复体积大、传输慢解析难度原生支持JS/PHP 一行代码解析需要专门解析器代码复杂数据类型支持数字 / 布尔 / 数组 / 对象所有数据都是字符串需手动转换注释标准格式不支持注释支持!-- 注释 --主要用途前后端接口、API、小程序、APP老系统、配置文件、企业级服务学习成本极低5 分钟学会较高规则复杂代码对照明显JSON更加轻便和简洁JSON------------------ { user: { id: 1, name: 张三, age: 20 } } XML------------------- user id1/id name张三/name age20/age /userJSON转码封装和解封装还原读取?php class index { public string $Username; private string $Email; private int $Age; private string $Password; public function __construct(string $Username,string $Email,int $Age,string $Password) { $this-Username $Username; $this-Email $Email; $this-Age $Age; $this-Password $Password; } public function __set(string $name, $value) { $this-$name $value; } public function __get(string $name) { if (property_exists($this,$name)) { return $this-$name; } return null; } public function getter() { return $this-age; } public function setter(string $Password) { $this-Password $Password; } public function getPassword() { return md5($this-Password); } } $UserIndex new index(李四,xxx163.com,18,999); echo 姓名 . $UserIndex-Username . \n . br. 邮箱 . $UserIndex-Email . \n . br. 年龄 . $UserIndex-Age . \n. br. 密码. $UserIndex-getPassword().\n.br; //json封装 $manMessagearray(name$UserIndex-Username,email$UserIndex-Email,age$UserIndex-Age); $manMessage_jsonjson_encode(($manMessage),JSON_UNESCAPED_UNICODE); echo br.json封装后.$manMessage_json.\n.br; //json解封装数据还原 echo br.解封装后; var_dump(json_decode($manMessage_json,true)); //打印指定值 $data json_decode($manMessage_json,true); echo 邮箱是.$data[email];这是用户提交信息JSON实战应用演示前端封装并提交前端js封装json并向后端发送json文件/** * 用户登录 JSON 封装并提交到 login.php * 运行node login.js */ const loginData { username: admin, password: 123456, }; // 封装为 JSON 字符串 const jsonBody JSON.stringify(loginData); fetch(http://localhost/json模拟/后端json解封装.php, { method: POST, header: { Content-Type: application/json, }, body: jsonBody, }) //返回文本 // .then((res) res.text()) // .then((text) { // console.log(PHP 返回); // console.log(text); // }) //返回状态码 .then((adc) adc.json()) .then((result) { console.log(状态码 code, result.code); console.log(完整返回, result); }) .catch((err) { console.error(请求失败, err.message); });后端json解封装?php /** * 接收前端 JS 封装的登录 JSON解封装后输出 */ header(Content-Type: application/json; charsetutf-8); // 读取 JS 发来的原始 JSON $rawJson file_get_contents(php://input); // 解封装JSON 字符串 → PHP 数组 $loginData json_decode($rawJson, true); if (json_last_error() ! JSON_ERROR_NONE) { echo json_encode([ success false, message JSON 解析失败, ], JSON_UNESCAPED_UNICODE); exit; } // 输出解封装后的数据 echo json_encode([ code 200, success true, message 接收并解封装成功, received [ username $loginData[username] ?? , password $loginData[password] ?? , ], ], JSON_UNESCAPED_UNICODE);返回结果可以看的出来前端js收到了后端的状态码和数据并按照前端的方式打印结果。