JSON-lib

来源:互联网 发布:人脸比对算法 编辑:程序博客网 时间:2024/05/20 23:08

一.JSON-lib应用

1.JSON-lib是什么?

  • 它可以把javabean转换成json串

2.jar包

  • JSON-lib的核心jar包有

    • json-lib.jar
  • JSON-lib的依赖jar包有

    • commons-lang.jar
    • commons-beanutils.jar
    • commons-logging.jar
    • commons-collections.jar
    • ezmorph.jar

json有关的jar包下

3.核心类

(1).JSONObject(相当于Map)

  • toString();
 public void fun1() {            JSONObject jsonObject=new JSONObject();            jsonObject.put("name", "zhangsan");            jsonObject.put("age", 18);            jsonObject.put("sex", "male");            String str=jsonObject.toString();            System.out.println(str);        }

输出

{"name":"zhangsan","age":18,"sex":"male"}
  • JSONObject map = JSONObject.fromObject(person); 把对象转换成JSONObject对象
/*         * 当你已经有一个Person对象时,可以把Person转换成JSONObject串         */        @Test        public void fun2() {            Person person = new Person("lisi",18,"female");            //把对象转换成JSONObject类型            JSONObject map = JSONObject.fromObject(person);            System.out.println(map.toString());        }

输出

{"age":18,"name":"lisi","sex":"female"}

(2).JSONArray(相当于List)

  • toString();
 public void fun3() {            Person p1 = new Person("lisi",18,"female");            Person p2 = new Person("zhangsan",18,"male");            JSONArray list = new JSONArray();            list.add(p1);            list.add(p2);            System.out.println(list.toString());        }

输出

[{"age":18,"name":"lisi","sex":"female"},{"age":18,"name":"zhangsan","sex":"male"}]
  • JSONArray jsonArray = JSONObject.fromObject(list);把list转换成JSONArray对象
 /*         * 原来就有一个List,我们需要把List转换成JSONArray         */        @Test        public void fun4() {            Person p1 = new Person("lisi",18,"female");            Person p2 = new Person("zhangsan",18,"male");            List<Person> list = new ArrayList<Person>();            list.add(p1);            list.add(p2);            System.out.println(JSONArray.fromObject(list));        }

输出

[{"age":18,"name":"lisi","sex":"female"},{"age":18,"name":"zhangsan","sex":"male"}]

二.打包ajax生成小工具

1.ajaxutils.js源码

// 创建request对象function createXMLHttpRequest(){                      try{                          return new XMLHttpRequest();//大多数浏览器                      }catch (e) {                        try{                            return ActiveXObject("Msxml2.XMLHTTP");//IE6.0                        }catch (e) {                            try {                             return ActiveXObject("Microsoft.XMLHTTP");//IE5.5及更早版本                            } catch (e) {                                alert("哥们儿,你用的什么浏览器????");                                throw e;                            }                    }                  }}/*option有如下属性*/        /*请求方式method,*/        /*请求的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);        }    };}

2.演示

<body>               <%-- 点击按钮后,把服务器响应的数据显示到h3元素中--%>              <button id="btn">点击这里</button>            <h1>显示自己封装的ajax小工具</h1>               <h3 id="h3"></h3></body>
<script type="text/javascript" src="ajax-lib/ajaxutils.js"></script><!--导入js文件--><script type="text/javascript">      window.onload = function() {              var btn = document.getElementById("btn");              btn.onclick = function() {                  /*                  1.ajax                  */                  ajax(                    {                        url:"/day23_03/AServlet",                        type:"json",                        callback:function(data){                            document.getElementById("h3").innerHTML = data.name+","+data.age+","+data.sex;                        }                    }                       );            };    };</script>
public class AServlet extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {            String string="{\"name\":\"zhangsan\",\"age\":18,\"sex\":\"male\"}";            response.getWriter().print(string);            System.out.println(string);    }}

效果

这里写图片描述