首頁  >  文章  >  web前端  >  js/jquery解析json和陣列格式的方法詳解

js/jquery解析json和陣列格式的方法詳解

高洛峰
高洛峰原創
2017-02-17 16:49:231054瀏覽

在解析之前,我們必須先弄清楚幾個概念:數組,關聯數組以及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

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遍歷整個數字

// 整個曆陣列

for (key in myhash) {

val = myhash[key];

}


4.取得值

方式1.myhash.key1
格式2.myhash.key2

{”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();
 }
更多js/jquery解析json和數組格式的方法詳解相關文章請關注PHP網! 🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn