北京麻将胡牌牌型
首頁 > 網頁教程 > JavaScript > JavaScript如何處理解析JSON數據詳解

JavaScript如何處理解析JSON數據詳解

時間:2012-09-24    來源:互聯網

JSON (JavaScript Object Notation)一種簡單的數據格式,比xml更輕巧。 JSON 是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON 數據不需要任何特殊的 API 或工具包。

JSON的規則很簡單: 對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。具體細節參考http://www.json.org/json-zh.html

舉個簡單的例子:

js 代碼

function showJSON() {    
    var user =    
    {    
    "username":"andy",    
    "age":20,    
    "info": { "tel": "123456", "cellphone": "98765"},    
    "address":    
    [    
    {"city":"beijing","postcode":"222333"},    
    {"city":"newyork","postcode":"555666"}    
    ]    
    }    
    
    alert(user.username);    
    alert(user.age);    
    alert(user.info.cellphone);    
    alert(user.address[0].city);    
    alert(user.address[0].postcode);    
    }   

這表示一個user對象,擁有username, age, info, address 等屬性。

同樣也可以用JSON來簡單的修改數據,修改上面的例子

js 代碼

function showJSON() {    
    var user =    
    {    
    "username":"andy",    
    "age":20,    
    "info": { "tel": "123456", "cellphone": "98765"},    
    "address":    
    [    
    {"city":"beijing","postcode":"222333"},    
    {"city":"newyork","postcode":"555666"}    
    ]    
    }    
    
    alert(user.username);    
    alert(user.age);    
    alert(user.info.cellphone);    
    alert(user.address[0].city);    
    alert(user.address[0].postcode);    
    
    user.username = "Tom";    
    alert(user.username);    
    }  

JSON提供了json.js包,下載http://www.json.org/json.js 后,將其引入然后就可以簡單的使用object.toJSONString()轉換成JSON數據。

js 代碼

function showCar() {    
    var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");    
    alert(carr.toJSONString());    
    }    
    
    function Car(make, model, year, color)        {    
    this.make   =   make;    
    this.model   =   model;    
    this.year   =   year;    
    this.color   =   color;    
    } 

可以使用eval來轉換JSON字符到Object

js 代碼

function myEval() {    
    var str = '{ "name": "Violet", "occupation": "character" }';    
    var obj = eval('(' + str + ')');    
    alert(obj.toJSONString());    
    }    

或者使用parseJSON()方法

js 代碼

function myEval() {    
    var str = '{ "name": "Violet", "occupation": "character" }';    
    var obj = str.parseJSON();    
    alert(obj.toJSONString());    
    }  

下面使用prototype寫一個JSON的ajax例子。

先寫一個servlet (我的是servlet.ajax.JSONTest1.java)就寫一句話 

java 代碼

response.getWriter().print("{ \"name\": \"Violet\", \"occupation\": \"character\" }");   

再在頁面中寫一個ajax的請求

js 代碼

function sendRequest() {    
    var url = "/MyWebApp/JSONTest1";    
    var mailAjax = new Ajax.Request(    
    url,    
    {    
    method: 'get',    
    onComplete: jsonResponse    
    }    
    );    
    }    
    
    function jsonResponse(originalRequest) {    
    alert(originalRequest.responseText);    
    var myobj = originalRequest.responseText.parseJSON();    
    alert(myobj.name);    
    } 

prototype-1.5.1.js中提供了JSON的方法,String.evalJSON(), 可以不使用json.js, 修改上面的方法

js 代碼

function jsonResponse(originalRequest) {    
    alert(originalRequest.responseText);    
    var myobj = originalRequest.responseText.evalJSON(true);    
    alert(myobj.name);    
    }    

JSON還提供了java的jar包 http://www.json.org/java/index.html API也很簡單,下面舉個例子

在javascript中填加請求參數

js 代碼

function sendRequest() {    
    var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");    
    var pars = "car=" + carr.toJSONString();    
    
    var url = "/MyWebApp/JSONTest1";    
    var mailAjax = new Ajax.Request(    
    url,    
    {    
    method: 'get',    
    parameters: pars,    
    onComplete: jsonResponse    
    }    
    );    
    }    

使用JSON請求字符串就可以簡單的生成JSONObject并進行解析,修改servlet添加JSON的處理(要使用json.jar)

java 代碼

private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {    
    String s3 = request.getParameter("car");    
    try {    
    JSONObject jsonObj = new JSONObject(s3);    
    System.out.println(jsonObj.getString("model"));    
    System.out.println(jsonObj.getInt("year"));    
    } catch (JSONException e) {    
    e.printStackTrace();    
    }    
    response.getWriter().print("{ \"name\": \"Violet\", \"occupation\": \"character\" }");    
    }    
    

同樣可以使用JSONObject生成JSON字符串,修改servlet

java 代碼

private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {    
    String s3 = request.getParameter("car");    
    try {    
    JSONObject jsonObj = new JSONObject(s3);    
    System.out.println(jsonObj.getString("model"));    
    System.out.println(jsonObj.getInt("year"));    
    } catch (JSONException e) {    
    e.printStackTrace();    
    }    
    
    JSONObject resultJSON = new JSONObject();    
    try {    
    resultJSON.append("name", "Violet")    
    .append("occupation", "developer")    
    .append("age", new Integer(22));    
    System.out.println(resultJSON.toString());    
    } catch (JSONException e) {    
    e.printStackTrace();    
    }    
    response.getWriter().print(resultJSON.toString());    
    }    
    js 代碼
    function jsonResponse(originalRequest) {    
    alert(originalRequest.responseText);    
    var myobj = originalRequest.responseText.evalJSON(true);    
    alert(myobj.name);    
    alert(myobj.age);    
    }  

參考

相關推薦
用javascript把XML解析為JSON的方法
用JavaScript處理JSON數據的代碼實例
在JavaScript中將JSON的字符串解析成JSON數據格式的兩種方法
JavaScript新手教程之JSON的使用全解(超詳細)
JS教程:NodeList集合跟Array數組的區別
用JavaScript實現表單驗證電話號碼的代碼實例
用正則表達式實現JavaScript表單驗證中文大寫字母
10個超級實用的javascript動畫框架分享
12個Ajax學習者必備的優秀網站
超棒的JavaScript 框架、工具和技術教程分享
文件上傳控件SWFUpload使用指南分享
多文件上傳控件plupload的使用心得分享
你可能不知道的一些JavaScript“奇技淫巧”
JavaScript編程中的for與in循環的用法實例
用JS代碼簡單實現checkbox的全選與反選
如何處理JS的'null'為空或不是對象
用javascript代碼實現對瀏覽器判斷的思路
25款有趣好玩的JavaScript小游戲
JS代碼的window.location屬性詳解
用Js操作Cookie的代碼教程附有詳細注釋
深入理解JavaScript的caller,callee,call,apply函數
獲取Javscript執行函數名稱的代碼實例
JavaScript的split函數詳解及代碼實例
新手教程:107條Javascript的常用語句
js禁用下拉框的代碼實例
js編程經驗分享 原始Ajax與jQuery中的Ajax比較
Javascript新手教程:從入門到精通(完整版)
10款基于Javascript的超酷繪畫和畫布類庫
網頁制作web開發中常用的javascript表單驗證函數分享

精彩推薦

熱門教程

北京麻将胡牌牌型 吉林市打击微信黑彩 福内蒙古时时 白小姐开奖免费下载 扑克做记号什么最好是 香港马会手机软件 抢庄牛牛棋牌下载 22选5 生财有道香港图库开奖结果 华体即时比分 云南十一选五走势图解