麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

使用JSON進行數據交換實例

2019-11-15 00:35:35
字體:
來源:轉載
供稿:網友
使用JSON進行數據交換實例

1 訪問javaScript對象的屬性

1.1 問題

訪問Javascript對象的屬性

1.2 方案

使用初始化的方式創建JavaScript對象,并訪問對象的屬性.

1.3 步驟

步驟一: 新建json01.html文件

添加鏈接的單擊動作,調用方法。

步驟二: 運行查看結果

步驟三: 添加復雜對象

步驟四: 運行查看結果

1.4 完整代碼

json01.html文件代碼如下:

<html>    <head>        <title>json01.html</title>        <meta http-equiv="content-type" content="text/html; charset=UTF-8">        <script type="text/javascript">            function f1(){                var obj = {'name':'Luffy','age':17};                alert(obj.name + "  " + obj.age);            }            function f2(){                var obj = {'name':'Luffy',                        'address':{                                    'city':'Beijing',                                    'street':'dzs',                                    'room':17                                                      }};                alert(obj.name + "  " + obj.address+"     "+obj.address.city );            }        </script>    </head>    <body>        <!—- 創建JavaScript對象并查看屬性 -->        <a href="javascript:;" onclick="f1();">查看對象屬性1</a>        </br>        <a href="javascript:;" onclick="f2();">查看對象屬性2</a>    </body></html>

2 訪問Javacript對象數組

2.1 問題

訪問JavaScript對象數組中的元素

2.2 方案

遵循數組的格式要求,使用方括號開頭和結尾。

2.3 步驟

步驟一: 新建json02.html文件,在文件中添加鏈接進行方法調用的測試。添加第一個方法f3()。

步驟二: 運行查看結果

步驟三: 添加下一個方法f4()

步驟四: 運行查看結果

2.4 完整代碼

json02.html文件代碼如下:

<html>    <head>        <title>json02.html</title>        <meta http-equiv="content-type" content="text/html; charset=UTF-8">        <script type="text/javascript">            function f3(){                var arr = [ {'name':'Luffy','age':17},                             {'name':'Zoro','age':19}];                 alert(arr[1].name);            }            function f4(){                var obj = {'name':'Luffy',                        'friends':[{'name':'Zoro','age':19},                                   {'name':'Nami','age':18}]                           };                alert(obj.name + "  " + obj.friends[1].name);            }        </script>    </head>    <body>        <!— 訪問JavaScript對象數組 -->        <a href="javascript:;" onclick="f3();">查看數組中的對象屬性1</a>        </br>        <a href="javascript:;" onclick="f4();">查看數組中的對象屬性2</a>    </body></html>

3 JSON字符串轉換成JavaScript對象

3.1 問題

將符合JSON格式要求的字符串,轉換為JavaScript對象。

3.2 方案

借助于原生的eval方法或者原生對象JSON.parse(str)方法。

3.3 步驟

步驟一: 新建json03.html文件

在文件中添加腳本代碼,f5()方法為字符串到對象的轉變過程。

JSON這個原生對象提供了字符串和對象之間轉換的方法,如果瀏覽器無法得到想要的輸出結果,是因為版本太低不支持這個原生對象。

步驟二:運行查看結果

步驟三: 添加方法f6(),實現數組的轉換

步驟四:運行查看結果

步驟五:添加f7()方法,實現對象到字符串的轉換

步驟六: 運行查看結果

3.4 完整代碼

    <html>      <head>        <title>json03.html</title>               <meta http-equiv="content-type" content="text/html; charset=UTF-8">               <script type="text/javascript" src="js/json.js"></script>            <script type="text/javascript">                    /*JSON字符串轉JSON對象*/            function f5(){                var str = '{"name":"Luffy","age":17}';                                            //第1種方式(不需要任何js文件)                //var obj = eval("("+str+")");                                第2種方式(不需要json.js文件)                //var obj = JSON.parse(str);                                //第3種方式(需要json.js文件)                //var obj = str.parseJSON();                                            alert(obj.name);            }                        /*JSON字符串轉JSON數組*/            function f6(){                var str = '[{"name":"Luffy","age":17},' +                           '{"name":"Zoro","age":19}]';                                       //第1種方式(不需要json.js文件)                var arr = eval("("+str+")");                                //第2種方式(需要json.js文件)                //var arr = str.parseJSON();                                alert(arr[1].name);            }                        /*JSON對象轉JSON字符串*/            function f7(){                var obj = {"name":"Luffy","age":17};                                //第1種方式(需要json.js文件)                //var str = obj.toJSONString();                               //第2種方式(不需要json.js文件)                var str = JSON.stringify(obj);                alert(str);            }        </script>      </head>        <body>          <!-- 使用JSON表示數組 -->        <a href="javascript:;" onclick="f5();">JSON字符串-->JSON對象</a><br/><br/><br/>        <a href="javascript:;" onclick="f6();">JSON字符串-->JSON數組</a><br/><br/><br/>        <a href="javascript:;" onclick="f7();">JSON對象-->JSON字符串</a><br/><br/><br/>      </body>    </html>

4 Java對象轉換成JSON字符串

4.1 問題

將Java對象轉換成符合JSON格式的字符串,并測試。

4.2 方案

使用與json-lib.jar相關的jar文件完成類型的轉換。

4.3 步驟

步驟一: 新建實體類 Friend

package com.souvc.json;public class Friend {    PRivate String name;    private int age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String toString() {        return this.name + "   " + this.age;    }}

步驟二: 新建JSONTest類

在該類中添加四個方法,分別用于測試Java對象轉換為JSON字符串,Java數組轉換為JSON字符串,JSON字符串轉換為Java對象,JSON字符串轉換為Java數組。

步驟三: 引入jar文件

在添加jar文件的時候,需要導入6個jar文件,缺一不可。

網盤jar包下載地址:http://yunpan.cn/cQyHfiAYWHmhg 訪問密碼 ab8f

或是到官方下載最新的json-lib工具包     下載地址:http://sourceforge.net/projects/json-lib/files/json-lib/json-lib-2.4/json-lib還需要以下依賴包:     jakarta commons-lang 2.5          jakarta commons-beanutils 1.8.0          jakarta commons-collections 3.2.1          jakarta commons-logging 1.1.1          ezmorph 1.0.6

步驟四: 添加具體的轉換方法:Java對象轉換為JSON字符串

/**     * Java對象轉換為JSON字符串     */    public static void test1() {        Friend f = new Friend();        f.setName("Zoro");        f.setAge(19);        JSONObject jsonObj = JSONObject.fromObject(f);        String jsonStr = jsonObj.toString();        System.out.println(jsonStr);    }

步驟五:運行結果

{"age":19,"name":"Zoro"}

步驟六: Java數組(集合)轉換為JSON字符串

/**     * JSON字符串轉換為Java數組     */    public static void test4() {        String jsonStr = "[{/"name/":/"Luffy/",/"age/":17},"                + "        {/"name/":/"Zoro/",/"age/":19}]";        JSONArray jsonArr = JSONArray.fromObject(jsonStr);        List<Friend> friends = (List<Friend>) JSONArray.toCollection(jsonArr,                Friend.class);        for (Friend f : friends) {            System.out.println(f);        }    }

運行結果:

[{"age":19,"name":"Zoro1"},{"age":20,"name":"Zoro2"},{"age":21,"name":"Zoro3"}]

步驟七:JSON字符串轉換為Java對象

/**     * JSON字符串轉換為Java對象     */    public static void test3() {        String jsonStr = "{/"name/":/"Luffy/",/"age/":17}";        JSONObject jsonObj = JSONObject.fromObject(jsonStr);        Friend friend = (Friend) JSONObject.toBean(jsonObj, Friend.class);        System.out.println(friend);    }

運行結果:

Luffy   17

步驟八: JSON字符串轉換為Java數組(集合)

/**     * JSON字符串轉換為Java數組     */    public static void test4() {        String jsonStr = "[{/"name/":/"Luffy/",/"age/":17},"                + "        {/"name/":/"Zoro/",/"age/":19}]";        JSONArray jsonArr = JSONArray.fromObject(jsonStr);        List<Friend> friends = (List<Friend>) JSONArray.toCollection(jsonArr,                Friend.class);        for (Friend f : friends) {            System.out.println(f);        }    }

運行結果:

Luffy   17Zoro   19

4.4 完整代碼

Friend.java文件代碼如下:

package com.souvc.json;public class Friend {    private String name;    private int age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String toString() {        return this.name + "   " + this.age;    }}

JSONTest 代碼:

package com.souvc.json;import java.util.ArrayList;import java.util.List;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class JSONTest {    /**     * Java對象轉換為JSON字符串     */    public static void test1() {        Friend f = new Friend();        f.setName("Zoro");        f.setAge(19);        JSONObject jsonObj = JSONObject.fromObject(f);        String jsonStr = jsonObj.toString();        System.out.println(jsonStr);    }    /**     * Java數組轉換為JSON字符串     */    public static void test2() {        List<Friend> fs = new ArrayList<Friend>();        for (int i = 0; i < 3; i++) {            Friend f = new Friend();            f.setName("Zoro" + (i + 1));            f.setAge(19 + i);            fs.add(f);        }        JSONArray jsonArr = JSONArray.fromObject(fs);        String jsonStr = jsonArr.toString();        System.out.println(jsonStr);    }    /**     * JSON字符串轉換為Java對象     */    public static void test3() {        String jsonStr = "{/"name/":/"Luffy/",/"age/":17}";        JSONObject jsonObj = JSONObject.fromObject(jsonStr);        Friend friend = (Friend) JSONObject.toBean(jsonObj, Friend.class);        System.out.println(friend);    }    /**     * JSON字符串轉換為Java數組     */    public static void test4() {        String jsonStr = "[{/"name/":/"Luffy/",/"age/":17},"                + "        {/"name/":/"Zoro/",/"age/":19}]";        JSONArray jsonArr = JSONArray.fromObject(jsonStr);        List<Friend> friends = (List<Friend>) JSONArray.toCollection(jsonArr,                Friend.class);        for (Friend f : friends) {            System.out.println(f);        }    }    public static void main(String[] args) {        test1();        test2();        test3();        test4();    }}

5 使用JSON完成級聯下拉列表

5.1 問題

結合異步請求,實現城市的級聯下拉列表。

5.2 方案

分別編寫客戶端腳本和服務器端處理程序。服務器端要實現將Java對象轉換為傳輸的JSON字符串??蛻舳嗽谑盏竭@個字符串以后進行轉換,變成JavaScript對象,使用對象的各個屬性構造下拉框的Option選項后添加到select下面。

5.3 步驟

步驟一: 新建實體類City

package com.souvc.json;public class City {    private String cityName;    private String cityValue;    public City() {        super();    }    public City(String cityName, String cityValue) {        super();        this.cityName = cityName;        this.cityValue = cityValue;    }    public String getCityName() {        return cityName;    }    public void setCityName(String cityName) {        this.cityName = cityName;    }    public String getCityValue() {        return cityValue;    }    public void setCityValue(String cityValue) {        this.cityValue = cityValue;    }}

步驟二: 新建ActionServlet

package com.souvc.json;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONArray;public class ActionServlet extends HttpServlet {    public void service(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {                request.setCharacterEncoding("UTF-8");        response.setContentType("text/html;charset=UTF-8");                PrintWriter out = response.getWriter();                //獲得請求路徑        String uri = request.getRequestURI();        //截取請求路徑        String action = uri.substring(uri.lastIndexOf("/"), uri                .lastIndexOf("."));                if (action.equals("/city")) {            String name = request.getParameter("name");            if (name.equals("bj")) {                City c1 = new City("海淀", "hd");                City c2 = new City("東城", "dc");                City c3 = new City("西城", "xc");                List<City> cs = new ArrayList<City>();                cs.add(c1);                cs.add(c2);                cs.add(c3);                JSONArray obj = JSONArray.fromObject(cs);                String str = obj.toString();                out.println(str);                            } else if (name.equals("sh")) {                City c1 = new City("徐匯", "xh");                City c2 = new City("靜安", "ja");                City c3 = new City("黃浦", "hp");                List<City> cs = new ArrayList<City>();                cs.add(c1);                cs.add(c2);                cs.add(c3);                JSONArray obj = JSONArray.fromObject(cs);                String str = obj.toString();                out.println(str);            }                    }        out.close();    }}

步驟三: 新建city.html文件

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>    <head>        <title>city.html</title>        <meta http-equiv="keyWords" content="keyword1,keyword2,keyword3">        <meta http-equiv="description" content="this is my page">        <meta http-equiv="content-type" content="text/html; charset=UTF-8">        <script type="text/javascript" src="js/json2.js"></script>        <script type="text/javascript">        function getxmlHttpRequest(){            var xhr = null;               if((typeof xmlhttpRequest)!='undefined'){                  xhr = new XMLHttpRequest();               }else {                  xhr = new ActiveXObject('Microsoft.XMLHttp');               }               return xhr;        }        function change(v1){            var xhr = getXmlHttpRequest();            xhr.open('post','city.do',true);            xhr.setRequestHeader("Content-Type",                "application/x-www-form-urlencoded");            xhr.onreadystatechange=function(){                if(xhr.readyState == 4){                    var txt = xhr.responseText;                    var citys = txt.parseJSON();                    document.getElementById('s2').innerHTML = '';                    for(i=0;i<citys.length;i++){                        var op =                         new Option(citys[i].cityName,                        citys[i].cityValue);                        document.getElementById('s2').options[i] = op;                    }                }            };            xhr.send('name=' + v1);        }    </script>    </head>    <body>        <select id="s1" style="width: 120px;" onchange="change(this.value);">            <option value="sh">                上海            </option>            <option value="bj">                北京            </option>        </select>        <select id="s2" style="width: 120px;">        </select>    </body></html>

步驟四: 運行查看結果

5.4 完整代碼

如上。

6 熱賣商品動態顯示

6.1 問題

每隔5秒鐘,顯示當前賣的最好的三件商品。

6.2 方案

每5秒鐘發送一次Ajax請求,將返回的JSON數組數據顯示到頁面的div中。

6.3 步驟

步驟一: 新建Sale類

package com.souvc.json;public class Sale {    private int id;    private String prodName;    private int qty;    public Sale() {        super();    }    public Sale(int id, String prodName, int qty) {        super();        this.id = id;        this.prodName = prodName;        this.qty = qty;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getProdName() {        return prodName;    }    public void setProdName(String prodName) {        this.prodName = prodName;    }    public int getQty() {        return qty;    }    public void setQty(int qty) {        this.qty = qty;    }}

步驟二: 新建dao包下面的DBUtil類和SaleDAO類

DBUtil.java文件:

package com.souvc.json;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;/** * JDBC管理連接的工具類,可以獲取連接和關閉連接 */public class DBUtil {    /**     * 獲取連接對象     */    public static Connection getConnection() throws Exception {        Connection conn = null;        try {            Class.forName("com.MySQL.jdbc.Driver");            conn = DriverManager.getConnection(                    "jdbc:mysql://localhost:3306/csdn", "root", "123456");        } catch (Exception e) {            e.printStackTrace();            throw e;        }        return conn;    }    /**     * 關閉連接對象     */    public static void close(Connection conn) throws Exception {        if (conn != null) {            try {                conn.close();            } catch (SQLException e) {                e.printStackTrace();                throw e;            }        }    }}

執行如下sql語句:

新建SaleDAO.java文件,編寫用于查詢銷量前三的方法。

package com.souvc.json;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;public class SaleDAO {    public List<Sale> findAll() throws Exception {        List<Sale> sales = new ArrayList<Sale>();        Connection conn = null;        PreparedStatement stmt = null;        ResultSet rs = null;        try {            conn = DBUtil.getConnection();            stmt = conn.prepareStatement("select * from (select rownum r,"                    + "a.* from (select * from t_sale order by qty desc) a) "                    + "c where c.r < 4");            rs = stmt.executeQuery();            while (rs.next()) {                Sale s = new Sale(rs.getInt("id"), rs.getString("prodname"), rs                        .getInt("qty"));                sales.add(s);            }        } catch (Exception e) {            e.printStackTrace();            throw e;        } finally {            DBUtil.close(conn);        }        return sales;    }}

步驟三: 新建ActionServlet類

package com.souvc.json;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONArray;public class ActionServlet extends HttpServlet {    public void service(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");        response.setContentType("text/html;charset=UTF-8");        PrintWriter out = response.getWriter();        // 獲得請求路徑        String uri = request.getRequestURI();        // 截取請求路徑        String action = uri.substring(uri.lastIndexOf("/"), uri                .lastIndexOf("."));        if (action.equals("/city")) {            String name = request.getParameter("name");            if (name.equals("bj")) {                City c1 = new City("海淀", "hd");                City c2 = new City("東城", "dc");                City c3 = new City("西城", "xc");                List<City> cs = new ArrayList<City>();                cs.add(c1);                cs.add(c2);                cs.add(c3);                JSONArray obj = JSONArray.fromObject(cs);                String str = obj.toString();                out.println(str);            } else if (name.equals("sh")) {                City c1 = new City("徐匯", "xh");                City c2 = new City("靜安", "ja");                City c3 = new City("黃浦", "hp");                List<City> cs = new ArrayList<City>();                cs.add(c1);                cs.add(c2);                cs.add(c3);                JSONArray obj = JSONArray.fromObject(cs);                String str = obj.toString();                out.println(str);            }        } else if (action.equals("/sale")) {            SaleDAO dao = new SaleDAO();            try {                List<Sale> all = dao.findAll();                JSONArray arry = JSONArray.fromObject(all);                out.println(arry.toString());            } catch (Exception e) {                e.printStackTrace();                throw new ServletException(e);            }        }        out.close();    }}

步驟四: 新建sales.html文件

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>    <head>        <title>sales.html</title>        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">        <meta http-equiv="description" content="this is my page">        <meta http-equiv="content-type" content="text/html; charset=UTF-8">        <style>#d1 {    width: 500px;    height: 180px;    background-color: #fff8dc;    border: 1px solid red;    margin-left: 350px;    margin-top: 50px;}</style>        <script type="text/javascript" src="js/prototype-1.6.0.3.js"></script>        <script type="text/javascript">        function getXmlHttpRequest(){            var xhr = null;            if((typeof XMLHttpRequest)!='undefined'){                  xhr = new XMLHttpRequest();                   }else {                  xhr = new ActiveXObject('Microsoft.XMLHttp');               }               return xhr;        }        function f1(){            setInterval(f2,5000);        }        function f2(){            var xhr = getXmlHttpRequest();            xhr.open('post','sale.do',true);            xhr.setRequestHeader("Content-Type",                "application/x-www-form-urlencoded");            xhr.onreadystatechange=function(){                if(xhr.readyState == 4){                    var txt = xhr.responseText;                    var sales = txt.evalJSON();                    var saleInfo = '當前銷量最好的商品是:<br/>';                    for(i=0;i<sales.length;i++){                        saleInfo += '商品名稱:'                         + sales[i].prodName + ' 銷量:' +                          sales[i].qty + '<br/>';                    }                    $('d1').innerHTML = saleInfo;                }            };            xhr.send(null);        }    </script>    </head>    <body onload="f1();">        <div id="d1"></div>    </body></html>

步驟五:運行查看結果

6.4 完整代碼

源碼: http://yunpan.cn/cQyrTefxWuHfK 訪問密碼 7b77


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一区二区免费看 | 91福利免费观看 | 高清一区二区在线观看 | 毛片在线播放视频 | 日韩精品a在线观看 | 欧产日产国产精品99 | 成人免费一区二区三区视频网站 | 五月婷婷第四色 | av视在线| 日韩av在线网 | 国产免费美女 | 国内精品久久久久久2021浪潮 | 草莓福利视频在线观看 | 亚洲欧美国产精品va在线观看 | 麻豆小视频在线观看 | 毛片免费试看 | 香蕉久草在线 | 夜夜看 | 看a级毛片 | 亚洲精中文字幕二区三区 | 成人精品一区二区 | 中国嫩模一级毛片 | 久色视频网站 | 97综合| 久久精品99久久久久久2456 | 欧美成人精品 | 中文字幕一区二区三区久久 | 久久久免费观看完整版 | 欧美精品成人一区二区三区四区 | 久久久久久久久久久国产精品 | 插插操| 亚洲第一页在线观看 | 免费黄色一级网站 | 国产jjizz一区二区三区视频 | 欧美一级一区二区三区 | 成人免费久久网 | 欧美成人免费 | 九九热精品视频在线 | 色淫影院 | 羞羞视频2023 | 欧美一级免费高清 |