JSON

json的定义

json由花括号和键值对组成。
每个键都由引号引起来,键和值之间使用冒号进行分隔。
多组键值对之间使用逗号进行分隔。

var jsonObj={
    "key1":12,
    "key2":"abc",
    "key3":[12,"abc",true],
    "key4":[12,"abc",true,{"key1":51}],
    "key5":{"key1":42,"key2":"ada"}
}

json的访问

变量名.属性名

alert(jsonObj.key1);
alert(jsonObj.key3[2]);
alert(jsonObj.key5[0].key1);

json的两个常用方法

JSON.stringify():将json对象转换为json字符串
JSON.parse():将json字符串转换为json对象

var jsonString=JSON.stringify(jsonObj);
alert(JSON.parse(jsonString));

json在java中的运用

//javaBean和json的互转
public void test1() throws Exception{
    Person person=new Person(1,"json");
    //需要导入Google提供的java类库GSON
    Gson gson=new Gson();
    //将javaBean对象转换为json字符串
    String personJsonString=gson.toJson(person);
    System.out.println(personJsonString);
    //将json字符串转换为javaBean对象
    Person pJson=gson.fromJson(personJsonString,Person.class);
    System.out.println(pJson);
}
//List和json的互转
public void test2() throws Exception{
    List<Person> persons=new ArrayList<>();
    persons.add(new Person(1,"json"));
    persons.add(new Person(2,"json"));
    persons.add(new Person(3,"json"));
    //创建gson类===谷歌的Gson.jar中提供的工具类
    Gson gson=new Gson();
    //将任意对象转换为json字符串
    Sting listJsonString=gson.toJson(persons);
    System.out.println(listJsonString);
    //将字符串转换为List集合,PersonListType是继承TypeToken<ArrayList<Person>>的空类
    //List<Person> pJosn=gson.fromJson(listJsonString,new PersonListType().getType());
    //使用匿名内部类,推荐
    List<Person> pJosn=gson.fromJson(listJsonString,new TypeToken<ArrayList<Person>>(){}.getType());
    System.out.println(pJosn);
    Person person=pJosn.get(0);
    System.out.println(person);
}
//map和json的互转
public void test3() throws Exception{
    Map<String,Person> person=new HashMap<>();
    person.put("p1",new Person(1,"json"));
    person.put("p1",new Person(2,"json"));
    person.put("p1",new Person(3,"json"));
    Gson gson=new Gson();
    //将map对象转换为json字符串
    String personJsonString=gson.toJson(person);
    System.out.println(personJsonString);
    //将json字符串转换为map集合
    Map<String,Person> pJosn=gson.fromJson(personJsonString,new TypeToken<HashMap<String,Person>>(){}.getType());
    System.out.println(pJson.get("p1"));
}

什么是Ajax请求

AJAX即异步JavaScript和XML,是指一种创建交互式网页应用的网页开发技术。一种浏览器异步发起请求,局部更新页面的技术。

//原生ajax请求
<html>
  <head>
    <script type="text/javascript">
	   function ajaxRequest(){
	      //1.我们首先要创建XMLHttpRequest
	      var xmlHttpRequest=new XMLHttpRequest();
	      //2.调用open方法设置请求参数
	      xmlHttpRequest.open(method,url,async);
	      //4.在send方法前绑定onreadystatechange事件,处理请求完成后的操作
	      xmlHttpRequest.onreadystatechange=function(){
	         if(xmlHttpRequest.readyState==4 && xmlHttpRequest.status==200){
	            //alert(xmlHttpRequest.responseText);
	            var data=JSON.parse(xmlHttpRequest.responseText);
	            document.getElementById("div01").innerHTML=data.id+data.name;
	         }
	      }
	      //3.调用send方法发送请求,post可带参数
	      xmlHttpRequest.send();
	   }
	</script>
  </head>
  <body>
    <button onclick="ajaxRequest()">ajax request</button>
    <div id="div01"></div>
  </body>
</html>

Jquery中的Ajax请求

$.ajax方法
url           请求的资源地址
type          请求的类型 get/post
data          发送给服务器的数据。name=value&name=value
success       成功的回调函数
datatype      回传数据类型 text、xml、json...
例如:
$.ajax({
   url:"ajaxServlet",
   type:"GET",
   //调用ajaxServlet中的jqueryAjax方法
   data:"action=jqueryAjax",
   success:function(data){
      //alert(data);
      var jsonObj=JSON.parse(data);
      $("#msg").html("编号:"+jsonObj.id+"姓名:"+jsonObj.name)
   },
   dataType:"json"
});

$.get方法和$.post方法
url           请求的资源地址
data          发送给服务器的数据。name=value&name=value
callback      成功的回调函数
type          回传数据类型 text、xml、json...
例如:
$.get("ajaxServlet",{action:"jqueryAjax"},function(data){
      $("#msg").html("编号:"+data.id+"姓名:"+data.name)
   },"json");
$.post("ajaxServlet",{action:"jqueryAjax"},function(data){
      $("#msg").html("编号:"+data.id+"姓名:"+data.name)
   },"json");

$.getJSON方法
url           请求的资源地址
data          发送给服务器的数据。name=value&name=value
callback      成功的回调函数
例如:
$.getJSON("ajaxServlet",{action:"jqueryAjax"},function(data){
      $("#msg").html("编号:"+data.id+"姓名:"+data.name)
   });

表单序列化serialize():可以吧一个表单内所有表单项以name=value&name=value的形式进行拼接。

$.getJSON("ajaxServlet","action=jqueryAjax&"+$("form").serialize(),function(data){
      $("#msg").html("编号:"+data.id+"姓名:"+data.name)
   });
$.ajax({
	    url:"LoginServlet", //要请求的url地址
	    type:'post', //请求方法 GET or POST
	    async:true, //是否使用异步请求的方式
	    timeout:5000, //请求超时的时间,以毫秒计
	    data:$(".form").serialize(),//参数,用POST方法时使用,如果用GET方法则直接在url后拼接参数即可
	    dataType:'text', //预期的服务器返回参数类型
	    beforeSend:function(){
	    },//再发送请求前调用的方法
	    success:function(data) {
	    	if(data!=""){
	    		$(".text-warning").html(data);
	    	}else{
	    		window.location.href="ArticleServlet";
	    	}
	    }, //请求成功时回调方法,data为服务器返回的数据
	    error:function(){
	    }, //请求发生错误时调用方法
	    complete:function(){
	    } //回调方法 无论success或者error都会执行
	});
JSONJSON David言 发布了16 篇原创文章 · 获赞 0 · 访问量 205 私信 关注
上一篇:Android网络请求框架------Retrofit的使用


下一篇:爱回购网站优化——Redis缓存