javascript json

原文来自: http://wangyu.iteye.com/blog/311274

JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。
JSON的规则很简单: 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。具体细节参考http://www.json.org/json-zh.html
举个简单的例子:
Js代码

   1. function showJSON() {     
   2.     var user =      
   3.     {      
   4.         "username":"andy",     
   5.         "age":20,     
   6.         "info": { "tel": "123456", "cellphone": "98765"},     
   7.         "address":     
   8.             [     
   9.                 {"city":"beijing","postcode":"222333"},     
  10.                 {"city":"newyork","postcode":"555666"}     
  11.             ]     
  12.     }     
  13.          
  14.     alert(user.username);     
  15.     alert(user.age);     
  16.     alert(user.info.cellphone);     
  17.     alert(user.address[0].city);     
  18.     alert(user.address[0].postcode);     
  19. }     

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代码

   1. function showJSON() {     
   2.     var user =      
   3.     {      
   4.         "username":"andy",     
   5.         "age":20,     
   6.         "info": { "tel": "123456", "cellphone": "98765"},     
   7.         "address":     
   8.             [     
   9.                 {"city":"beijing","postcode":"222333"},     
  10.                 {"city":"newyork","postcode":"555666"}     
  11.             ]     
  12.     }     
  13.          
  14.     alert(user.username);     
  15.     alert(user.age);     
  16.     alert(user.info.cellphone);     
  17.     alert(user.address[0].city);     
  18.     alert(user.address[0].postcode);     
  19.          
  20.     user.username = "Tom";     
  21.     alert(user.username);     
  22. }     

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包,下载[url]http://www.json.org/json.js [/url]后,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据。
Js代码

   1. function showCar() {     
   2.     var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");     
   3.     alert(carr.toJSONString());     
   4. }     
   5.     
   6. function Car(make, model, year, color)       {     
   7.      this.make  =  make;     
   8.      this.model  =  model;     
   9.      this.year  =  year;     
  10.      this.color  =  color;     
  11. }     

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代码

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

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


或者使用parseJSON()方法
Js代码

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

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


下面使用prototype写一个JSON的ajax例子。
先写一个servlet (我的是servlet.ajax.JSONTest1.java)就写一句话
Java 代码

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

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


再在页面中写一个ajax的请求
Js代码

   1. function sendRequest() {     
   2.     var url = "/MyWebApp/JSONTest1";     
   3.     var mailAjax = new Ajax.Request(     
   4.         url,     
   5.         {     
   6.             method: 'get',     
   7.             onComplete: jsonResponse     
   8.         }     
   9.     );     
  10. }     
  11.     
  12. function jsonResponse(originalRequest) {     
  13.     alert(originalRequest.responseText);     
  14.     var myobj = originalRequest.responseText.parseJSON();     
  15.     alert(myobj.name);     
  16. }     

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代码

   1. function jsonResponse(originalRequest) {     
   2.     alert(originalRequest.responseText);     
   3.     var myobj = originalRequest.responseText.evalJSON(true);     
   4.     alert(myobj.name);     
   5. }     

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代码

   1. function sendRequest() {     
   2.     var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");     
   3.     var pars = "car=" + carr.toJSONString();     
   4.     
   5.     var url = "/MyWebApp/JSONTest1";     
   6.     var mailAjax = new Ajax.Request(     
   7.         url,     
   8.         {     
   9.             method: 'get',     
  10.             parameters: pars,     
  11.             onComplete: jsonResponse     
  12.         }     
  13.     );     
  14. }     

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 代码

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

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 代码

   1. private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {     
   2.         String s3 = request.getParameter("car");     
   3.         try {     
   4.             JSONObject jsonObj = new JSONObject(s3);     
   5.             System.out.println(jsonObj.getString("model"));     
   6.             System.out.println(jsonObj.getInt("year"));     
   7.         } catch (JSONException e) {     
   8.             e.printStackTrace();     
   9.         }     
  10.              
  11.         JSONObject resultJSON = new JSONObject();     
  12.         try {     
  13.             resultJSON.append("name", "Violet")     
  14.                       .append("occupation", "developer")     
  15.                       .append("age", new Integer(22));     
  16.             System.out.println(resultJSON.toString());     
  17.         } catch (JSONException e) {     
  18.             e.printStackTrace();     
  19.         }     
  20. } 

你可能感兴趣的:(JavaScript,Ajax,json,servlet,prototype)