JSON
1.json是什么
* 它是js提供的一种数据交换格式!
2.json的语法
* { }:是对象!
> 属性名必须使用双引号括起来!单引号不行!!!
> 属性值:
* null
* 数值
* 字符串
* 数组:使用[ ]括起来
* boolean值:true和false
3.应用json
* var person={"name":"金泰妍", "age":18, "sex":"female" };
代码示例:
AServlet:
package day23_3;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class AServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); /* * 向客户端发送json字符串 */ String str="{\"name\":\"金泰妍\"}"; System.out.println(str); response.getWriter().print(str); }}
json2.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>json2 json
4.JSON与XML比较
* 可读性:XML胜出;
* 解析难度:JSON本身就是JS对象,所有简单很多;
* 流行度: XML已经流行好多年,但在AJAX领域,JSON更受欢迎。
json-lib
1.是什么?
* 它可以把JavaBean转换成json字符串
2.jar包
json-lib的核心jar包有:
json-lib.jar
json-lib的依赖jar包有:
commons-lang.jar
commons-beanutils.jar
commons-logging.jar
commons-collection.jar
ezmorph.jar
3.核心类
* JSONObject--->Map
> toString();
> JSONObject map = JSONObject.fromObject(person):把对象转换成JSONObject对象
* JSONArray--->List
> tonString();
> JSONArray jsonArray=JSONArray.fromObject(list):把list转换成JSONArray对象
代码示例:
package com.xjs.demo1;import java.util.ArrayList;import java.util.List;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import org.junit.Test;/** * 演示JSON-lib小工具 * @author hp * */public class Demo1 { @Test public void fun1(){ JSONObject map=new JSONObject(); map.put("name", "金泰妍"); map.put("age", 18); map.put("sex", "female"); String s=map.toString(); System.out.println(s); } @Test public void fun2(){ Person p=new Person("金泰妍",18,"女"); JSONObject map=JSONObject.fromObject(p); String s = map.toString(); System.out.println(s); } @Test public void fun3(){ Person p1=new Person("抽对",20,"女"); Person p2=new Person("taeyeon",23,"女"); Person p3=new Person("金软软",26,"女"); JSONArray list=new JSONArray(); list.add(p1); list.add(p2); list.add(p3); System.out.println(list.toString()); } /** * 原来就有一个List,我们需要把List转换成JSONArray */ @Test public void fun4(){ Person p1=new Person("抽对",20,"女"); Person p2=new Person("taeyeon",23,"女"); Person p3=new Person("金软软",26,"女"); Listlist=new ArrayList (); list.add(p1); list.add(p2); list.add(p3); JSONArray a=JSONArray.fromObject(list); System.out.println(a.toString()); }}
打包ajax生成小工具---类似JQuery的ajax方法
ajaxutils.js:--->在ajax-lib包下放
// 创建request对象function createXMLHttpRequest() { try { return new XMLHttpRequest();//大多数浏览器 } catch (e) { try { return ActvieXObject("Msxml2.XMLHTTP");//IE6.0 } catch (e) { try { return ActvieXObject("Microsoft.XMLHTTP");//IE5.5及更早版本 } catch (e) { alert("哥们儿,您用的是什么浏览器啊?"); throw e; } } }}/* * option对象有如下属性 */ /*请求方式*//*method,*/ /*请求的url*/ /*url, */ /*是否异步*//*asyn, */ /*请求体*//*params, */ /*回调方法*//*callback,*/ /*服务器响应数据转换成什么类型*//*type*/function ajax(option) { /* * 1. 得到xmlHttp */ var xmlHttp = createXMLHttpRequest(); /* * 2. 打开连接 */ if(!option.method) { //默认为GET请求 option.method = "GET"; } if(option.asyn == undefined) { //默认为异步处理 option.asyn = true; } xmlHttp.open(option.method, option.url, option.asyn); /* * 3. 判断是否为POST */ if("POST" == option.method) { xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); } /* * 4. 发送请求 */ xmlHttp.send(option.params); /* * 5. 注册监听 */ xmlHttp.onreadystatechange = function() { if(xmlHttp.readyState == 4 && xmlHttp.status == 200) { //双重判断 var data; // 获取服务器的响应数据,进行转换! if(!option.type) { //如果type没有赋值,那么默认为文本 data = xmlHttp.responseText; } else if(option.type == "xml") { data = xmlHttp.responseXML; } else if(option.type == "text") { data = xmlHttp.responseText; } else if(option.type == "json") { var text = xmlHttp.responseText; data = eval("(" + text + ")"); } // 调用回调方法 option.callback(data); } };};
json3.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>My JSP 'json3.jsp' starting page 演示自己封装的ajax小工具
AServlet:
package day23_3;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class AServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/json;charset=utf-8"); /* * 向客户端发送json字符串 */ String str="{\"name\":\"金泰妍\",\"age\":23,\"sex\":\"女\"}"; System.out.println(str); response.getWriter().print(str); }}