博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSON
阅读量:5339 次
发布时间:2019-06-15

本文共 6377 字,大约阅读时间需要 21 分钟。

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,"女");        List
list=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);    }}

 

转载于:https://www.cnblogs.com/xjs1874704478/p/11010619.html

你可能感兴趣的文章
display:none与visible:hidden的区别
查看>>
我的PHP学习之路
查看>>
【题解】luogu p2340 奶牛会展
查看>>
对PostgreSQL的 SPI_prepare 的理解。
查看>>
解决响应式布局下兼容性的问题
查看>>
京东静态网页练习记录
查看>>
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
Solr4.8.0源码分析(5)之查询流程分析总述
查看>>
[Windows Server]安装系统显示“缺少计算机所需的介质驱动程序”解决方案
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
Lucene 学习之二:数值类型的索引和范围查询分析
查看>>
软件开发工作模型
查看>>
Java基础之字符串匹配大全
查看>>
面向对象
查看>>
lintcode83- Single Number II- midium
查看>>
移动端 响应式、自适应、适配 实现方法分析(和其他基础知识拓展)
查看>>
selenium-窗口切换
查看>>