什么是json
与xml的比较
语法格式:
json就相当于后端的对象调用toString()方法,是js对象的字符串表示法,json和js的互转用的是JSON.parse()和JSON.stringify()方法;
stringify(死君个fai)
案例:
输出:
前后端分离,数据交互变得异常重要,json就是其中的王者
使用controller返回json数据
先导依赖
因为加了responsebody注解所以不会返回到视图解析器
对象转json,使用对象映射器类
new ObjectMapper().writeValueAsString(user)
把项目放到tomcat
发现问题,乱码
@requestmapping加一个参数produces设置编码以及返回类型
然后每次都需要这么配置比较麻烦,可以去配置文件一劳永逸
json格式乱码处理方式
示例3:在配置了之后传一个集合对象
返回时间日期
不设置会返回时间戳字符串
设置一下,可以提取工具方法
AJAX
增强B/S端的体验性
B/S:未来的主游,还会爆发式增长
示例:伪造的ajax
运行:
我们不用原生的底层XMLHttpRequest,直接用jquery提供的ajax有关方法
放在静态资源下
下面是JQ ajax的方法
主要看第五个:
接下来示例:
在导入jquery的时候记得要绝对路径
默认get可以加个type参数也可以直接$.post
后端:
测试:
示例2:
$(function () {
}) 让他一进来就执行一个函数,函数获取btn绑定的点击事件
测试:
示例3:
测试:
碰到过的面试题:
-
ajax的参数有哪些:回答几个和意思足以
-
前端json转字符串数组,后端json转字符串数组
//首先这个字符串要是一个合法的json字符串,才能转换成json对象
JSON.parse( str )//转换成json对象 即js对象
JSON.stringify( jsonObject )//转换成json字符串 即字符串
JSON转JS数组
//json字符串转数组
var jsonStr = '[1,2,3,{"a":1}]';
var jsarr=JSON.parse( jsonStr );
alert(jsarr[0]);
JS数组转JSON
//数组转json串
var arr = [1,2,3, { a : 1 } ];
JSON.stringify( arr );
后端,json和字符串数组互转
要想实现JSON和java对象之间的互转,需要借助第三方jar包,这里使用json-lib这个jar包
json-lib提供了几个类可以完成此功能,例,JSONObject、JSONArray。从类的名字上可以看出JSONObject转化的应该是对象格式的,而JSONArray转化的则应该是数组对象(即,带[]形式)的。
java对象–》》字符串
public static void convertObject() {
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress("北京市西城区");
//1、使用JSONObject
JSONObject json = JSONObject.fromObject(stu);
//2、使用JSONArray
JSONArray array=JSONArray.fromObject(stu);
String strJson=json.toString();
String strArray=array.toString();
System.out.println("strJson:"+strJson);
System.out.println("strArray:"+strArray);
}
打印的结果
strJson:{"address":"北京市西城区","age":"23","name":"JSON"}
strArray:[{"address":"北京市西城区","age":"23","name":"JSON"}]
从结果中可以看出两种方法都可以把java对象转化为JSON字符串,只是转化后的结构不同。
JSON字符串–》》java对象
首先需要定义两种不同格式的字符串,需要使用 \对双引号 进行转义,
public static void jsonStrToJava(){
//定义两种不同格式的字符串
String objectStr="{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}";
String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}]";
//1、使用JSONObject
JSONObject jsonObject=JSONObject.fromObject(objectStr);
Student stu=(Student)JSONObject.toBean(jsonObject, Student.class);
System.out.println("stu:"+stu);
//2、使用JSONArray
JSONArray jsonArray=JSONArray.fromObject(arrayStr);
//获得jsonArray的第一个元素
Object o=jsonArray.get(0);
JSONObject jsonObject2=JSONObject.fromObject(o);
Student stu2=(Student)JSONObject.toBean(jsonObject2, Student.class);
System.out.println("stu2:"+stu2);
}
输出
stu:Student [name=JSON, age=24, address=北京市西城区]
stu2:Student [name=JSON, age=24, address=北京市西城区]
以上讲述了一种jar包的转换方法,也可以导入其他jar包
比如阿里巴巴的:import com.alibaba.fastjson.JSON;