当前位置:编程学习 > JS >>

json 详解

以前只知道有json,并不知道能有什么用途,今天就仔细的了解了下……

浏览器从服务器端接收数据时,那些数据必须以浏览器能够理解的格式来发送,服务器端的编程语言只能以如下3种格式返回数据:xml、json、html
JSON:JavaScript 对象表示法(JavaScript Object Notation), 是存储和交换文本信息的语法。一种轻量级的数据交换格式,类似 XML,比 XML 更小、更快,更易解析。Json是javascript的原生格式,这意味着在javascript中处理json数据不需要任何特殊的api或工具包。
相比 XML 的不同之处:没有结束标签,更短,读写的速度更快,能够使用内建的 JavaScript eval() 方法进行解析,使用数组不使用保留字
为什么使用 JSON?
对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:
使用 XML、读取 XML 文档、使用 XML DOM 来循环遍历文档、读取值并存储在变量中
使用 JSON、读取 JSON 字符串、用 eval() 处理 JSON 字符串
Json规则很简单:
a.映射用冒号 “:” 表示,名称:值
b.并列的数据之间用逗号(,)分隔。名称1:值1,名称2:值2
c.映射的集合(对象)用大括号(“{}”)表示。{名称1:值1,名称2:值2}
d.并列数据的集合(数组)用方括号(”[]”)表示。
[
{名称1:值1,名称2:值2},
{名称1:值1,名称2:值2}
]
e. 元素值可具有的类型:string,number,object,array,true,false,null
Json只是一种文本字符串,被存储在responseText属性中,为了读取存储在responseText属性中的json数据,需要根据js中的eval函数把字符串当作它的参数,然后这个字符串会被当做js代码来执行,因为json的字符串就是由js代码构成的,所以它本身是可执行的,eval通过计算 string 得到的值(如果有的话)


下面是例子:

客户端:


[html] 
    <body> 
        <script type="text/javascript"> 
<%-- 
  
  // json表示形式如此强大,几乎可以满足任何常用服务器语言的需求 
  //js表示一个对象用json 
  var people={"name":"ljf","age":"20","email":"ljfbest@foxmail.com"}; 
 
   
  //多个对象 
  var people1=[ 
                {"name":"ljf","age":"20","email":"ljfbest@foxmail.com"}, 
                {"name":"ljf1","age":"21","email":"ljfbest1@foxmail.com"} 
              ] 
 
  //混搭 
  var peoples={"param1": 
                [ 
                    {"name":"ljf","age":"20","email":"ljfbest@foxmail.com"}, 
                    {"name":"ljf1","age":"21","email":"ljfbest1@foxmail.com"} 
                ], 
                "param2": 
                [ 
                    {"no":"123","class":"2"}, 
                    {"name":"ljf1","age":"21","email":"ljfbest1@foxmail.com"} 
                ]    
              } 
 
  var information={ 
                  "name":"ljfbest", 
                  "age":"20", 
                  "tel":"155555555", 
                  address:[ 
                              {"family":"shangqiu","code":"123333"}, 
                              {"company":"nyist","code":"1222333"}       
                          ] 
                   }//名称不带引号也可以,此例中的address 
  alert(information.address[0].family); 
   
  --%> 
   
  function ajaxFunction(){ 
      var xmlHttp; 
      try{ 
          xmlHttp=new XMLHttpRequest(); 
      }catch(e){ 
          try{ 
              xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
          }catch(e){ 
              try{ 
                  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP") 
              }catch(e){} 
          } 
      } 
      return xmlHttp; 
  } 
   
  window.onload=function(){ 
        document.getElementById("ok").onclick= function()//与服务器交互监听返回的数据状态    
        {   
            var xmlReq=ajaxFunction(); 
            xmlReq.onreadystatechange=function(){ 
                if(xmlReq.readyState==4){ 
                    if(xmlReq.status==200||xmlReq.status==304) 
&n

补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,