Json 入门 送给亲爱的女朋友, 祝她天天快乐 作者 :hlz QQ:81452743 MSN/Email:hulizhong2008@163.com
json 入门 (1) json 是 JavaScript Object Notation 的简称 ; 在 web 系统开发中与 AJAX 相结合用的比较多 在 ajax 中数据传输有 2 中方式 : 文本类型, 常用 responsetext 属性类获取 ;XML 类型, 常用 responsexml 属性来获取返回文本类型, 处理起来比较简单, 处理 XML 在前台处理比较麻烦 ; 但是在系统开发中返回简单的文本类型常不能满足需求, 返回 XML 在前台处理起来又比较复杂 ; 在此情况下, 用 json 处理起来就比较方便 ; 关于 json 和 XML 的优缺点比较, 网上说的比较多, 在此我就谈写自己在使用过程中的感受 :XML 权威不可否认, 但是在前台页面处理复杂, 不能版本的浏览器实现 XML 的解析方式也有所差别 ;json 在这方面有优势,json 就是利用 javascrpt 语言的特性, 把从服务器端返回的字符串转换成 js 对象 ; 在 javascrpt 中可以用如下方式定义对象 : var obj={name:"hello world"; 等价与 var s="{name:'hello world'"; var obj=eval("("+s+")"); 如果要获取 name 属性的值, 只需调用 obj["name"] 即可 如果服务器端返回的是 <name>hello world</name>, 则要取的 name 属性的值就复杂的多 ; 如果返回的 XML 格式的数据再复杂些, 处理起来更麻烦 而 json 就是把服务器端返回的文本数据, 在前台利用 javascript 语言的特性, 把文本数据转换成 js 对象 ; 如下 : 服务器端 : server.jsp <%@ page language="java" pageencoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> </head> <body> <% response.setcontenttype("text/html;charset=utf-8"); response.getwriter().write("{name:'hello word',obj:{age:11"); %> </body>
</html> 客户端 : client.html 不相关的代码省略不写了 var strresult = objxmlreq.responsetext; 变量 strresult 的数值就是 "{name:'hello word',obj:{age:11"; 利用 javascrpt 语言的特性 : strresult=eval("("+strresult+")"); 这样 strresult 就转换成了 js 对象了 ; 如果你要获取 name 和 age 的数值, 只需要 : var name=strresult["name"]; var age=strresult["obj"]["age"]; 比处理 XML 数据要方便的多 ; 文笔不好, 请大家见量!json 相关内容回陆续推出! son 入门 (2) json 在服务器端的应用 在上文中说了 json 应用的一个简单过程 在本文中详细说一个 json 在服务器端的应用 json 在服务器端应用大致分为 2 类 : 1, 接受并解析客户端发送给服务器的 json 数据 2, 服务器向客户端发送 json 数据 下面分别说一下这 2 方面的应用 : 1, 接受并解析客户端发送给服务器的 json 数据如果客户端发送给服务器的数据是 {name:'hello',obj:['age','13'] 服务器端程序如下 : package com.test; import org.json.jsonarray; import org.json.jsonexception; import org.json.jsonobject; /*+++++++++++++++++++++++++++++++++++++++++++++++++ +@author lzh +Description: +Copyright:Copyright 2008 HULIZHONG +Author:lzh(hulizhong2008@163.com) +History: ++++++++++++++++++++++++++++++++++++++++++++++++++*/ public class JSONHandler { public void parsejson(string jsonstr) throws Exception{ // 参数 jsonstr 的值为 {name:'hello',obj:['age','13']
String name=null,age=null; JSONObject jsonobject=new JSONObject(jsonStr); name=(string)jsonobject.get("name"); //name 的值应是 hello age=((jsonobject)jsonobject.get("obj")).get("age"); //age 的值应是 13 上面的程序就完成了服务器端对客户端发送 json 数据的解析工作, 再获取 name,age 值后, 即可进行其它业务逻辑处理! 2, 服务器向客户端发送 json 数据 package com; import javax.servlet.http.httpservletresponse; import org.json.jsonobject; /*+++++++++++++++++++++++++++++++++++++++++++++++++ +@author lzh +Description: +Copyright:Copyright 2008 HULIZHONG +Author:lzh(hulizhong2008@163.com) +History: ++++++++++++++++++++++++++++++++++++++++++++++++++*/ public class JSONResponse { public void jsonresponse(httpservletresponse response) throws Exception { // 向客户端发送数据 :{name:'hello',obj:['age','13'] JSONObject obj1 = new JSONObject(); JSONObject obj2 = new JSONObject(); obj2.put("age", "13"); obj1.put("name", "hello"); obj1.put("obj", obj2); response.setheader("cache-control", "no-cache"); response.setcontenttype("text/plain"); response.setcharacterencoding("utf-8"); //obj1.tostring() 即为 {name:'hello',obj:['age','13'] response.getwriter().print(obj1.tostring()); 上述代码即为完成了服务端向客户端发送 json 数据的解析工作, 客户端在接受 {name:'hello',obj:['age','13'] 数据后根据具体业务要求进行数据处理
参考 : www.json.org: 访问 JSON Web 站点来进一步了解这种数据格式, 包括到几种 JSON API 实现的链接