javaScript Object Notation,是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,JSON采用完全独立于语言的文本格式,而且很多语言提供了对JSON的支持(c,c++,c#,Java,js,pythod,perl)使得JSON成为理想的数据交换格式。
- 轻量级:和xml做比较,比xml解析快
- 数据交换:指客户端和服务器之间的业务数据的传输格式
json由键值对组成,花括号包围,每个键使用引号,键和值使用冒号分隔,多组键值对使用逗号分隔
var jsonobj={
"key1":12,
"key2":"abc",
"key3":true,
"key4":[11,"arr",false],
"key5":{
"key5_1":551,
"key5_2":"key5_2_value"
},
"key6":[{
"key6_1_1":6611,
"key6_1_2":"key_6_1_2_value"
},{
"key6_2_1":6611,
"key6_2_2":"key_6_2_2_value"
}]
};
Json中常用的方法:
//Json对象转化为Json字符串 var jsonobjString =JSON.stringify(jsonobj); alert(jsonobjString); //Json字符串转化为Json对象 var jsonobj2=JSON.parse(jsonobjString); alert(jsonobj2);
通过Gson相互转换Json字符串和JavaBean:
person p1=new person(1,"test");
//1:创建GSON实例
Gson gson=new Gson();
//2:JavaBean对象转化为JSON字符串 使用gson的toJson()
String p1JsonString = gson.toJson(p1);
System.out.println(p1JsonString);//{"id":1,"name":"test"}
//3:JSON字符串转换为JavaBean对象 使用gson的fromJson(json字符串,JAVA对象类型.class)
person p2= gson.fromJson(p1JsonString, person.class);
System.out.println(p2);//person{id=1, name='test'}
通过Gson相互转换Json字符串和List集合:
Listlist=new ArrayList<>(); list.add(new person(1,"test")); list.add(new person(2,"hdlzay")); //1:创建GSON实例 Gson gson=new Gson(); //2:将list转换为JSON字符串 使用gson的toJson() String personListJsonString = gson.toJson(list); System.out.println(personListJsonString);//[{"id":1,"name":"test"},{"id":2,"name":"hdlzay"}] //3:将JSON字符串 转换为List集合 List personList = gson.fromJson(personListJsonString,new TypeToken >(){}.getType()); System.out.println(personList.get(0));// 成功转化为javabean :person{id=1, name='test'}
通过Gson互相转换Json字符串和Map:
Map2:什么是Ajaxmap=new HashMap<>(); map.put(1,new person(1,"test")); map.put(2,new person(2,"hdlazy")); //1:创建gson实例 Gson gson=new Gson(); //2:将map转化为JSON字符串 使用gson的toJson方法 String personmapJsonStrig = gson.toJson(map); System.out.println(personmapJsonStrig);//{"1":{"id":1,"name":"test"},"2":{"id":2,"name":"hdlazy"}} //3:将JSON字符串转化为map 和list相同需要创建类继承TypeToken
Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)用来描述一种使用现有技术集合的‘新’方法,包括: HTML 或 XHTML, CSS,JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。
简单来说:
- 局部更新:浏览器地址栏不会发生变化,同时不舍弃之前页面的内容
- 异步请求:提高用户体验,在ajax数据返回之前不会使得页面停滞等待数据返回
封装Ajax请求:util.js
function ajax(args){
var xhr=new XMLHttpRequest();
xhr.onreadystatechange=function(){
//状态为4表示请求成功,调用回调函数处理后端传递的数据
if(xhr.readyState==4){
args.callback(xhr.responseText,xhr.status);
}
}
//open方法用来发送请求
xhr.open(args.method,args.url);
if(args.contentType){
xhr.setRequestHeader('Content-Type',args.contentType);
}
if(args.body){
xhr.send(args.body);
}else{
xhr.send();
}
}
测试:
Document
后端响应:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
resp.getWriter().write(username);
resp.getWriter().write(password);
}



