json 是一种轻量级的数据交换格式。数据交换指的是客户端和服务器之间业务数据的传递格式。
json是由键值对组成,并且由花括号包围,每个键由引号引起来,键和值之间使用冒号进行分割,多个键值对之间使用逗号进行分割
<script type="text/javascript"> //1. json的定义 var jsonObj = { /*1.基本数据类型*/ "key1":13, "key2":"hello", "key3":true, //2. 数组 "key3":[1,"ok",false], //3. json "key4":{ "key4_1":99, "key4_2":"book" }, "key5":[{ "key5_1_1":33, "key5_1_2":"star" },"world",{ "key5_2_1":12, "key5_2_2":"sky" }] }; //2. json的访问 // json对象转字符串 // json字符串转json对象 </script>
同对象.属性一致
1.使用方式
json有两种存在形式:json对象、json字符串
JSON.stringify():把json对象转换为字符串
var jsonString = JSON.stringify(jsonObj);//类似Java中的toString()方法
JSON。parse():把json字符串转换为json对象
2. 应用场景
操作json数据时使用json对象
客户端和服务器之间数据交换时,使用json字符串
Google的一个gson包
https://wwa.lanzoui.com/iSYDzp7e83c
//1. javaBean 和json 的互转 @Test public void test1(){ Person person = new Person(1,"cat"); //创建Gson对象实例 Gson gson = new Gson(); //gson.toJson()方法将javabean转为json字符串 String jsonString = gson.toJson(person); System.out.println(jsonString); //gson.from(jsonString,class)将json字符串转为一个javabean Person fromJson = gson.fromJson(jsonString, Person.class); System.out.println(fromJson); }
//2. List和json的互转 @Test public void test2(){ List<Person> personList = new ArrayList<Person>(); Person person1 = new Person(1,"画画"); Person person2 = new Person(1,"运动"); Person person3 = new Person(1,"读书"); personList.add(person1); personList.add(person2); personList.add(person3); Gson gson = new Gson(); String jsonString = gson.toJson(personList); /*[{"id":1,"name":"画画"},{"id":1,"name":"运动"},{"id":1,"name":"读书"}]*/ System.out.println(jsonString); //转回来 //1. 创建一个类继承TypeToken,并指定该类的泛型为返回的集合类 /* public class PersonList extends TypeToken<ArrayList<Person>> { } */ //2. gson.fromJson()第二个参数为:new 继承类.getType() List<Person> personList1 = gson.fromJson(jsonString, new PersonList().getType()); System.out.println(personList1.get(0));
//3. map 和json 的互转 @Test public void test3(){ Map<Integer,Person> personMap = new HashMap<Integer,Person>(); personMap.put(1,new Person(33,"Mac")); personMap.put(2,new Person(12,"iphone")); Gson gson = new Gson(); String personMapJsonString = gson.toJson(personMap); System.out.println(personMapJsonString); //转回去 //继承类 /* public class PersonMap extends TypeToken<HashMap<Integer, Person>> { } */ // Map<Integer,Person> personMap1 = gson.fromJson(personMapJsonString, new PersonMap().getType()); //匿名内部类的方式 Map<Integer,Person> personMap1 = gson.fromJson(personMapJsonString, new TypeToken<HashMap<Integer,Person>>(){}.getType()); System.out.println(personMap1.get(2)); }
略
Servlet程序
protected void ajaxRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("收到Ajax请求"); Person person = new Person(0,"生而为人,我很抱歉"); Gson gson = new Gson(); String jsonString = gson.toJson(person); resp.getWriter().write(jsonString); }
$(function(){ // ajax请求 $("#ajaxBtn").click(function(){ $.ajax({ url:"http://localhost:8080/json_ajax_i18n/ajax" , type: 'GET', data: "action=ajaxRequest", success:function(data){ //alert("服务器返回的数据:"+data); //var jsonObj = JSON.parse(data); $("#msg").html("编号:"+data.id+",姓名:"+data.name); }, dataType:"json" }) });
$("#getBtn").click(function() { $.get("http://localhost:8080/json_ajax_i18n/ajax", "action=ajaxRequest", function (data) { $("#msg").html("编号:" + data.id + ",姓名:" + data.name); }, "json") }); // ajax--post请求 $("#postBtn").click(function(){ // post请求 $.get("http://localhost:8080/json_ajax_i18n/ajax", "action=ajaxRequest", function (data) { $("#msg").html("编号:" + data.id + ",姓名:" + data.name); }, "json") });
只有url、data和callback三个参数
$.getJSON("http://localhost:8080/json_ajax_i18n/ajax", "action=ajaxRequest", function (data) { $("#msg").html("编号:" + data.id + ",姓名:" + data.name); })
serialize()可以把表单中所有表单项的内容都获取到,并以name=value&name=value 的形式进行拼接。
表单信息:
// ajax请求 $("#submit").click(function(){ // 把参数序列化 //alert($("#form01").serialize()); $.getJSON("http://localhost:8080/json_ajax_i18n/ajax","action=jQueryAjaxSerialize&"+$("#form01").serialize(),function(data){ }) });
protected void jQueryAjaxSerialize(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String username = req.getParameter("username"); String password = req.getParameter("password"); System.out.println("用户名:"+username); System.out.println("密码:"+password); }
输出: