前后端分离不可少的json数据传输格式
通过异步接口(AJAX/JSONP)来编程,
下面是json的介绍,ajax在jquery中详细讲过
接口规范
1、接口返回数据即显示:前端仅做渲染逻辑处理;
2、渲染逻辑禁止跨多个接口调用;
3、前端关注交互、渲染逻辑,尽量避免业务逻辑处理的出现;
4、请求响应传输数据格式:JSON,JSON数据尽量简单轻量,避免多级JSON的出现
格式
基本格式
200: 请求处理成功
500: 请求处理失败
401: 请求未认证,跳转登录页
406: 请求未授权,跳转未授权提示页
{
"code": 200,
"data": {
"message": "success"
}
}
实体格式:
{
'code': 200,
'data': {
'message': 'success',
'entity': {
'id': 1,
'name': 'XXX',
'hobby': 'XXX'
}
}
}
列表格式:
{
"code": 200,
"data": {
"message": "success",
" list": [
{
" id": 1,
"name": "XXX",
"hobby": "XXX"
},
{
" id": 2,
"name": "XXX",
" hobby": "XXX"
}
]
}
}
分页格式:
{
code: 200,
data: {
recordCount: 2,//当前页记录数
message: "success",
totalCount: 2,//总记录数
pageNo: 1,//当前页码
pageSize: 10,//每页大小
list: [
{
id: 1,
name: "XXX",
hobby: "H001"
},
{
id: 2,
name: "XXX",
hobby: "H001"
} ],
totalPage: 1//总页数
}
}
下拉框、复选框、单选框
{
code: 200,
data: {
message: "success",
list: [{
id: 1,
name: "XXX",
hobby: "XXX",
isSelect: 1
}, {
id: 1,
name: "XXX",
hobby: "XXX",
isSelect: 0
}]
}
}
后端接口统一逻辑判定是否选中,通过isSelect标示是否选中,禁止下拉框、复选框、单选框判定选中逻辑由前端来处理
Boolean类型
JSON数据传输中一律使用1/0来标示,1为是/True,0为否/False;
日期类型
JSON数据传输中一律使用字符串,具体日期格式因业务而定
json的介绍
是轻量级的数据交换格式
json简单说就是JavaScript的对象和数组
对象:{key1:value1,key2:value2,…}
数组:[“java”,“javase”,“javaee”]
注:这两种结构可以互相嵌套
[{key1:value1},{key2:value2},{key3:value2}]
{key1:[value1,value2],key2:[value2]}
Fastjson的介绍
JSONObject代表json对象
1、实现了Map接口,底层是Map实现
2.对应json对象,通过各种形式的get()方法可以获取对象中的数据,也可以用size(),isEmpty()等方法获取键值对的个数,以及判断是否为空,其本质是通过实现Map接口并调用接口中的方法实现
2、JSONArray代表json数组
内部是有list接口中的方法来完成操作的
3、JSON代表JSONObject和JSONArray的转化
主要实现json对象。json对象数组。javabean对象、json字符串之间的相互转化
将java对象转化成json数据,也可以将一个json转化成java对象
Fastjson是阿里提供的一个开源json插件
处理jsond的插件 fastjson、jsonlib、flexjson、jackson
import com.alibaba.fastjson.JSONObject;
public class Tourist {
private int id;//游客id
private String name;//游客姓名
private String gender;//游客性别
private String phone;//手机号码
public Tourist(){
}
public Tourist(int id,String name,String gender,String phone){
this.id=id;
this.name = name;
this.gender = gender;
this.phone = phone;
}
}
public static void main(String[] args) {
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.qj.pojo.Tourist;
public class TestJson {
public static void main(String[] args) {
Tourist tourist = new Tourist(1,"安好","男","2311313");
//对象转化成json
String json = JSONObject.toJSONString(tourist);
System.out.println(json);
System.out.println(JSON.toJSONString(tourist));
System.out.println(JSON.toJSON(tourist));
System.out.println(JSON.toJSONString(json));
}
}
}
}
{"gender":"男","id":1,"name":"安好","phone":"2311313"}
{"gender":"男","id":1,"name":"安好","phone":"2311313"}
{"name":"安好","id":1,"gender":"男","phone":"2311313"}
"{\"gender\":\"男\",\"id\":1,\"name\":\"安好\",\"phone\":\"2311313\"}"
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import java.util.ArrayList;
import java.util.List;
public class Project {
//java对象转化成json数据格式
@JSONField(name="编号")
private int id;
@JSONField(name = "名称")
private String name;
@JSONField(name = "数量")
private int count;
@JSONField(name = "金额")
private double price;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getCount() {
return count;