陈新龙
前端与后端是如何进行数据交互的呢?登录网站时系统是如何将我们输入的用户名和密码数据传输到服务器进行登录校验的呢?这就涉及JSON 数据格式的知识了。
JSON是一种非常重要的数据格式,它并不是编程语言,而是一种可以在服务器和客户端之间传输的数据格式。因为XML 整合到HTML 中各个浏览器实现的细节不尽相同,所以道格拉斯·克罗克福特和奇普·莫宁斯达一起从JS 的数据类型中提取了一个子集,作为新的数据交换格式,因为主流的浏览器使用了通用的JavaScript 引擎组件,所以在解析这种新数据格式时就不存在兼容性问题,于是他们便将这种数据格式命名为“JavaScriptObject Notation”,简称JSON。
我们需要了解JSON 的结构形式、数据类型、使用场景以及注意事项。
这个简单的前端页面中有一个提交表单,表单中包含用户名输入框(username)和密码输入框(password),以及登录按钮(如图1)。
输入用户名和密码后点击登录按钮,页面会向“loginDemo/login”发起一个POST 请求;请求发出后,需要Java 写的后端程序来接受该请求。请求会打印出账号和密码,F12 打开浏览器控制台观察传过去的值,username= 小陈老师&password=123456,其中中文经过编码处理。其实这是QueryString 的一种格式,并不是我们所希望获得的JSON格式(如图2)。
JSON 有雨刷两种结构形式,键值对形式和数组形式。键值对形式比较简单:
{"username":" 小陈老师","age":23,"password":"123456}
这种结构的JSON 数据规则是:一个无序的“名称/ 值”集合。对象以大括号表示开始和结束。每一組键值对之间使用逗号分隔,每组名称和值之间用冒号分隔。这种key-value 形式使用较普遍。
JSON 的数组形式:
["one", 18, "two", " 浙江省宁波市"]
这和Python 中的list 列表有点相似。数组形式的JSON数据就是值(value)的有序集合。数组以左中括号开始右中括号结束,值之间用逗号分隔。
我们通过Postman工具演示将账号和密码以JSON 的形式传送至服务端。在Postman 工具中将默认的QueryString格式调整为JSON 数据格式,可以看到一对大括号中包含了账号和密码。后端的代码正确接收到了数据(如图3)。
JSON较多应用在接口返回数据和序列化,WEB 应用中大部分数据接口以JSON格式返回(也存在XML 格式),还有AJxa异步访问数据,RPC 远程调用,前后端分离后端返回的数据,开发API 接口(百度、高德)等。