JSON初步

Posted 十三弦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON初步相关的知识,希望对你有一定的参考价值。

1.什么是JSON

(1)JSON(Java Script Object Notation)是一种轻量级的数据交换语言,

        以文本字符串为基础,且易于让人阅读

        XML就是一个重量级的数据交换语言

(2)JSON采用完全独立于任何程序语言的文本格式,使JSON成为理想的数据交换语言

2.struts中使用JSON

引入jar包

struts配置中将包继承自json-default

result中的type属性设置为json

3.JSON实现的三级联动

jsp:

    <select id="provinceID" onchange="getCity(this)">
        <option >选择省份</option>
        <option >广东</option>
        <option >山东</option>
    </select>
    <select id="cityID" onchange="getArea(this)">
        <option value="">选择城市</option>
    </select>
    <select id="areaID" >
        <option value="">选择区域</option>
    </select>

js:

function getCity(selEle)
{
    var province = selEle[selEle.selectedIndex].innerhtml;
    //清空城市下拉框
    var cityEle = document.getElementById("cityID");
    cityEle.options.length=1;
    //清空区域下拉框
    var areaEle = document.getElementById("areaID");
    areaEle.options.length=1;
    if(province == "选择省份")
        return ;
    var ajax = createAJAX();
    var method = "POST";
    var url = "${pageContext.request.contextPath}/getCity?time="
        +new Date().getTime();
    ajax.open(method,url);
    var content = "loc.province="+province;
    ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");
    ajax.send(content);

    ajax.onreadystatechange = function(){
        if(ajax.readyState == 4)
        {
            if(ajax.status == 200)
            {

                //返回java格式的json,不能被js执行
                var jsonJAVA = ajax.responseText;
                //将java格式的json转成js格式的json
                var jsonJS = eval("("+jsonJAVA+")");
                var array = jsonJS.cityList;
                for(var i =0;i<array.length;i++){
                    var option = document.createElement("option");
                    option.innerHTML = array[i];
                    cityEle.appendChild(option);

                }

            }
        }
    }
}

function getArea(selEle) {
    var city = selEle[selEle.selectedIndex].innerHTML;
    //清空区域下拉框
    var areaEle = document.getElementById("areaID");
    areaEle.options.length=1;
    if(city == "选择城市") {
        return;
    }
    var ajax = createAJAX();
    var method = "POST";
    var url = "${pageContext.request.contextPath}/getArea?time="
        +new Date().getTime();
    ajax.open(method,url);
    ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");
    var content = "loc.city="+city;
    ajax.send(content);
    ajax.onreadystatechange = function(){
        if(ajax.readyState == 4)
        {
            if(ajax.status == 200)
            {
                var jsonJAVA = ajax.responseText;

                var jsonJS = eval("("+jsonJAVA+")");
                var array = jsonJS.areaList;
                for(var i=0;i<array.length;i++){
                    var option = document.createElement("option");
                    option.innerHTML = array[i];
                    areaEle.appendChild(option);
                }
            }
        }
    }

}

struts.xml

    <package name="json" extends="json-default">
        <action name="getCity" class="jsonAction" method="getCity">
            <result name="success" type="json"/>
        </action>
        <action name="getArea" class="jsonAction" method="getArea">
            <result name="success" type="json"/>
        </action>
    </package>

action:

public class JsonAction extends ActionSupport implements RequestAware{
    private Map<String,Object> request;
    @Override
    public void setRequest(Map<String, Object> map) {
        this.request = map;
    }

    private Location loc;

    public void setLoc(Location loc) {
        this.loc = loc;
    }

    public Location getLoc() {
        return loc;
    }
    private List<String> cityList;

    public List<String> getCityList() {
        return cityList;
    }

    //    根据省份获得城市
    public String getCity(){
        cityList = new ArrayList<String>();
        if("广东".equals(loc.getProvince()))
        {
            cityList.add("广州");
            cityList.add("深圳");
            cityList.add("珠海");
        }
        else if("山东".equals(loc.getProvince()))
        {
            cityList.add("济南");
            cityList.add("枣庄");
            cityList.add("青岛");
            cityList.add("烟台");
        }
        return SUCCESS;
    }
//    根据城市获取区域
    private List<String> areaList;

    public List<String> getAreaList() {
        return areaList;
    }

    public String getArea(){
        areaList = new ArrayList<String>();
        if("枣庄".equals(loc.getCity()))
        {
            areaList.add("市中区");
            areaList.add("山亭区");
            areaList.add("台儿庄区");
        }
        return SUCCESS;
    }
}

4.使用第三方工具,将Bean对象、List、Set、Map对象转成JSON

@Test
    public void test1(){
        Location location = new Location();
        location.setProvince("山东");
        location.setCity("枣庄");
        JSONArray jsonArray = JSONArray.fromObject(location);
        System.out.println(jsonArray);
        //[{"province":"山东","city":"枣庄"}]
    }
    @Test
    public void test2(){
        ArrayList<Location> locs = new ArrayList<>();
        Location location = new Location();
        location.setProvince("山东");
        location.setCity("枣庄");
        Location location2 = new Location();
        location2.setProvince("广东");
        location2.setCity("广州");
        locs.add(location);
        locs.add(location2);
        JSONArray jsonArray = JSONArray.fromObject(locs);
        System.out.println(jsonArray);
        //[{"province":"山东","city":"枣庄"},{"province":"广东","city":"广州"}]
    }
    @Test
    public void test3(){
        Set<Location> locs = new LinkedHashSet<>();
        Location location = new Location();
        location.setProvince("山东");
        location.setCity("枣庄");
        Location location2 = new Location();
        location2.setProvince("广东");
        location2.setCity("广州");
        locs.add(location);
        locs.add(location2);
        JSONArray jsonArray = JSONArray.fromObject(locs);
        System.out.println(jsonArray);
        //[{"province":"山东","city":"枣庄"},{"province":"广东","city":"广州"}]
    }
    @Test
    public void test4(){
        Department department = new Department();
        department.setId(10);
        Employee emp1 = new Employee();
        emp1.setEmpName("zhang");
        emp1.setSalary(1000);
        Employee emp2= new Employee();
        emp2.setEmpName("lisi");
        emp2.setSalary(2000);
        List<Employee> employeeList = new ArrayList<Employee>();
        employeeList.add(emp1);
        employeeList.add(emp2);
        department.setEmps(employeeList);
        JSONArray jsonArray = JSONArray.fromObject(department);
        System.out.println(jsonArray);
        //[{
        // "emps":[{"empId":0,"empName":"zhang","dept":null,"salary":1000},
        // {"empId":0,"empName":"lisi","dept":null,"salary":2000}],
        // "id":10
        // }]
    }

5.JSON的特点

   (1)在客户端,直接使用javascript语言解析JSON,无需第三方jar包

   (2)本质上,就是一个文本,只是该文本有特定的书写格式

   (3)可以使用第三方工具,将JavaBean对象或者List/Set/Map<JavaBean>对象转成JSON

   (4)优点:JSON与XML很相似,但是它更加轻巧,服务器只需发送一个html普通字符串,不用发送复杂的xml格式文档了

   (5)缺点:语法过于严谨,初学者可能觉得代码不易读,写错一点都不行

   (6)JSON本质上,就是用JS语法写的特殊文本记号,用JS可以直接解析

以上是关于JSON初步的主要内容,如果未能解决你的问题,请参考以下文章

josn初步

JWT的初步了解以及sessioncookie机制

连接mongoDB根据ObjectID写入json数据(初步)

快速模板的演示网站初步搭建好了

快速模板的演示网站初步搭建好了

快速模板的演示网站初步搭建好了