java json javascript

来源:互联网 发布:html5 javascript手册 编辑:程序博客网 时间:2024/06/06 01:34

json 字符串

形式一  多个对象传送、

  • var datas="
  • {
  • root:
  • [
  • {name:'1',value:'0'},
  • {name:'6101',value:'北京市'},
  • {name:'6102',value:'天津市'},
  • {name:'6103',value:'上海市'},
  • {name:'6104',value:'重庆市'},
  • {name:'6105',value:'渭南市'},
  • {name:'6106',value:'延安市'},
  • {name:'6107',value:'汉中市'},
  • {name:'6108',value:'榆林市'},
  • {name:'6109',value:'安康市'},
  • {name:'6110',value:'商洛市'}
  • ]
  • }"; 

    页面解析:

      var obj = eval(obj); // 转换为对象

      alert(obj[0].length);//  11

    形式二一个对象传送、

    var datas = "({name:'1',value:'0',name1:'6101',value1:'北京市',name2:'6102',value2:'天津市'})";

    页面解析:

    var obj = eval(obj);

    alert(obj);

     

    范例:使用Ajax 访问后台获得数据 ,将数据转换为 JSON 字符串,前台解析该Json字符串

    <script type="text/javascript">
     var req = null;
     function getResult() {
            var url = "/AjaxJson/servlet/JsonServlet?state="+new Date().getTime();
            if (window.XMLHttpRequest) {
                    req = new XMLHttpRequest();
            }else if (window.ActiveXObject) {
                    req = new ActiveXObject("Microsoft.XMLHTTP");
            }
            if(req){
                    req.open("GET",url, true);
                    req.onreadystatechange = complete;
                    req.send(null);
            }
       } 
      function complete(){
            if (req.readyState == 4) {
                    if (req.status == 200) {
                            var city = req.responseText;
                            city = eval(city);  //对象数组
                            var s = "name";
                            for(var i=0; i<city.length; i++){
                             s = "name"+i;  
    //对象属性名 的 拼接
                             var obj = city[i]; // city[i].s  方式无法获取
                             alert(obj[s]);    //索引获取对象值
                            }   
                    }
            }
        }
     </script>

    后台:

        PrintWriter pw = response.getWriter();
               String datas="{ " +
                 "root:[" +
                 "{name0:'1',value:'0'}," +
                 "{name1:'6101',value:'北京市'}," +
                 "{name2:'6102',value:'天津市'}," +
                 "{name3:'6103',value:'上海市'}" +
                 "]" +
                 "}";
               pw.print(datas);
               pw.flush();
               pw.close();

    总结:

  •  

    惯例 主要框架为 :( {   +.....+  } )  当传送一个对象的时候"....." 直接为 "对象属性名:对象属性值" ,... ,.. ;

                 当传送对象为多个的时候".....".为 数组名:[  ]里面包括多个对象{},{}

  • 注意:({})js 会将其里面内容解析成一个对象:上例中的 ( { root: [ {}, {} ] } )  被解析成一个拥有 一个数组对象root的 对象,  如果不存在( ),将被直接解析成一个无名的对象数组

  •    [ ] js 解析成 一个数组 {} 解析成一个对象

  •    在上面红色字体标出,通过拼接的 对象属性名 是否只能通过对象索引[ index]方式获得,用obj.拼接的属性名 方法无法获取,有人能解释吗
  • 原创粉丝点击