JSON
主流的数据交换格式,结构清晰、易于解析
定义
Json(JavaScript Object Notation)是一种轻量级的数据格式,用来表示结构化的数据格式。虽然名字里有JavaScript,但是几乎被所有变成语言知识
基本的语言结构
{ "username":"admin"; "password":"admin123"; "rememberMe":true; "roles":["admin","user"] }
-
key必须用双引号括起来
-
支持的值类型
-
字符串(string)
-
数字(number)
-
布尔值(tuue/false)
-
数组(array)
-
对象(object)
-
null
-
使用场景
-
前后端接口交互(如登录、注册、查询数据)
-
移动APP和Web API接口通信
-
配置文件(如package.json、manifest.json)
特点
-
结构清晰:层级明确,方便阅读和编写
-
跨语言支持好:Java、Python等都内置解析器
-
体积小:比XML更节省带宽、传输快
XML
较少使用,但部分老系统仍在用
定义
XML(eXtensible Markup Language),是可扩展标记语言,类似HTML,但更复杂,主要用于一些传统行业系统中。
基本语法结构
<user> <name>李四</name> <age>30</age> <is_student>false</is_student> <hobbies> <item>读书</item> <item>音乐</item> </hobbies> <address> <city>上海</city> <zip>200000</zip> </address> </user>
-
所有标签必须成对出现(开始+结束)
-
标签名可以自定义
-
层级嵌套表示结构
使用场景
-
金融、政府等行业的老系统接口
-
某些支付接口(如微信支付早期版本)
-
SOAP协议中的标准数据格式
特点
-
语法繁琐:标签多,写起来麻烦
-
可读性差:不如JSON简洁直观
-
正在逐渐被淘汰,但在维护老项目是仍需了解
表单数据和URL编码
表单数据(Form Data)和 URL 编码(x-www-form-urlencoded)这两种格式都是浏览器提交网页表单时默认使用的
x-www-form-urlencoded(URL 编码)
定义
这是一种将表单数据编码为key=value形式的格式,适用于普通文本数据的提交
基本语法结构
原始数据
用户名:admin 密码:123456 记住我:true
编码后
username=admin&password=123456&rememberMe=true
特殊字符会被转义:
-
空格——>%20
-
中文——>%E4%B8%AD%E6%96%87
-
@——>%40
使用场景
-
登录、注册、搜索等普通表单提交
-
不适合上传文件
multipart/form-data(表单数据)
定义
这是浏览器上传文件时的标准格式,它把每个字段都作为一个独立的部分发送,支持二进制内容(比如图片、视频)
实例
(postman发送时自动处理)
Key | Value | Type |
---|---|---|
username | admin | Text |
avatar | image.jpg | File |
使用场景
-
图片、文件上传
-
表单中包含文件字段时
二进制数据
上传文件等
定义
当你需要上传一张图片、一个PDF或者一段音频/视频时,这些内容本质上是一串”字节“,也就是二进制数据
特点
-
不能直接阅读或者复制粘贴
-
必须配合
multipart/form-data
使用 -
后端通常接收为
File
类型参数(例如 Java 的MultipartFile
,Python 的request.files
)
实例
你用微信发了一张照片给朋友:
-
微信 App 把这张照片读取成二进制数据;
-
构造成
multipart/form-data
请求; -
发送到服务器;
-
服务器接收到的是一个完整的文件对象;
-
你的朋友就能看到这张图了。
总结对比
数据格式 | 是否能传文件 | 可读性 | 适用场景 | 典型应用举例 |
---|---|---|---|---|
JSON | ❌ | ✅ 高(结构清晰) | 接口通信、配置文件 | 登录返回数据、API 接口 |
XML | ❌ | ❌ 低(冗余多) | 老系统、SOAP 接口 | 政府系统、银行支付接口 |
x-www-form-urlencoded | ❌ | ✅ 中等 | 普通表单提交 | 登录、搜索 |
multipart/form-data | ✅ | ❌ 低(需工具查看) | 文件上传、带附件的表单 | 头像上传、文档上传 |
二进制数据 | ✅ | ❌ 不可读 | 图片、视频、PDF | 视频上传、图片上传 |