萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> js/jquery解析json和數組格式的方法詳解

js/jquery解析json和數組格式的方法詳解

 本篇文章主要是對js/jquery解析json和數組格式的方法進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助

在解析之前,我們必須弄清楚幾個概念:數組,關聯數組以及json之間有哪些區別和聯系點?   一.概念介紹 1.數組   語法:  ECMAScript v3規定了數組直接量的語法,JavaScript 1.2和JScript 3.0實現了它。可以把—個用逗號分隔的表達式列表放在方括號中,創建並初始化—個數組。這些表達式的值將成為數組元素。例如:   var a = [1, true, 'abc'];   具體操作查看API.   ps:必須方括號隔開。   2.關聯數組   1.語法: var myhash= {”key1″:”val1″, “key2″:”val2″ };//obj   2.var myhash= {key1:”val1″, key2:”val2″ };//obj-也可以   ps:跟json格式幾乎相同,但是json格式要求更加嚴格(裡面的鍵值對必須使用雙引號),但json只能作為一種格式標准,如果要對其進行操作必須轉換成關聯數組對象(obj)。   2.簡單操作 1.向Hash關聯數組添加鍵值   // 添加一個新鍵 newkey ,鍵值為 newval    myhash[”newkey”] = “newval”;   2.刪除Hash關聯數組已有鍵值   // 刪除一個鍵 newkey ,同時,該鍵值對應的 newval 也就消失了 delete myhash[”newkey”];   3.遍歷Hash關聯數組   // 遍歷整個hash 數組  for (key in myhash) { val = myhash[key]; }   4.獲得值   方式1.myhash.key1 方式2.myhash.key2   3.json 格式要求:   {”key1″:”val1″, “key2″:”val2″ };//嚴格按照此格式,操作可依照關聯數組的操作   二.前後台交互中幾個關鍵點 1.當服務器發送的數據不是一條json,而是多條json時,則應當聯系數組和關聯數組來組裝字符串 例如:var objs = [{ id: 1, name: 'n_1' }, { id: 2, name: 'n_2'}];   2.至始至終服務器給客戶端的數據都只是字符串,因此為了讓其能夠在js中對其進行必要的操作,可以通過eval()進行轉換成js可執行的對象。 因此jQuey中提供的$.parseJSON()是有局限的,如果是上面1提到的這種情況則就必須使用eval()進行轉換,然後再通過$.each(objs,function(i,o){...})進行操作   三.具體的實例代碼 頁面代碼:    代碼如下: <body>  <input type="button" value="send ajax json" onclick="sendAjaxByjson();"/>  <input type="button" value="send ajax array" onclick="sendAjaxByarray();"/> </body>  <script type="text/javascript">   function sendAjaxByjson(){    $.post("json",{},function(data){     var obj=data;     alert(typeof obj);//string     //var a=eval(obj);不解,不注釋則會報錯..     var strToobj=$.parseJSON(obj);     alert(strToobj.name);     alert(typeof strToobj)//obj     var obja={'name':'techbirds','age':'23','sex':'male'};     alert(typeof obja);//obj     alert(obja['name']+":"+obja.age);     delete obja['name'];    });   }   function sendAjaxByarray(){    $.post("array",{},function(data){     var str=data;     alert(typeof str);//string     alert(typeof eval(str));//object     var obja=[1,2,3,4,5];     alert(typeof obja);//object      });   }  </script>   後台代碼: 代碼如下: @Override  protected void service(HttpServletRequest req, HttpServletResponse reps)    throws ServletException, IOException {   Map<String, Object> jsonMap=new HashMap<String, Object>();   jsonMap.put("name", "techbirds");   jsonMap.put("age", 23);   jsonMap.put("sex", "male");   reps.getWriter().print(JSONObject.fromObject(jsonMap).toString());   reps.getWriter().flush();   reps.getWriter().close();    }   代碼如下:  @Override  protected void service(HttpServletRequest req, HttpServletResponse reps)    throws ServletException, IOException {   String array="[1,2,3,4,5,6]";   reps.getWriter().print(array);   reps.getWriter().flush();   reps.getWriter().close();    }  
copyright © 萬盛學電腦網 all rights reserved