JSON学习

JSON JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

JSON的规则很简单: 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。具体细节参考http://www.json.org/json-zh.html

举个简单的例子:

js 代码
  1. functionshowJSON(){
  2. varuser=
  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. alert(user.username);
  14. alert(user.age);
  15. alert(user.info.cellphone);
  16. alert(user.address[0].city);
  17. alert(user.address[0].postcode);
  18. }

这表示一个user对象,拥有username, age, info, address 等属性。

同样也可以用JSON来简单的修改数据,修改上面的例子

js 代码
  1. functionshowJSON(){
  2. varuser=
  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. alert(user.username);
  14. alert(user.age);
  15. alert(user.info.cellphone);
  16. alert(user.address[0].city);
  17. alert(user.address[0].postcode);
  18. user.username="Tom";
  19. alert(user.username);
  20. }

JSON提供了json.js包,下载http://www.json.org/json.js 后,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据。

js 代码
  1. functionshowCar(){
  2. varcarr=newCar("Dodge","CoronetR/T",1968,"yellow");
  3. alert(carr.toJSONString());
  4. }
  5. functionCar(make,model,year,color){
  6. this.make=make;
  7. this.model=model;
  8. this.year=year;
  9. this.color=color;
  10. }

可以使用eval来转换JSON字符到Object

js 代码
  1. functionmyEval(){
  2. varstr='{"name":"Violet","occupation":"character"}';
  3. varobj=eval('('+str+')');
  4. alert(obj.toJSONString());
  5. }

或者使用parseJSON()方法

js 代码
  1. functionmyEval(){
  2. varstr='{"name":"Violet","occupation":"character"}';
  3. varobj=str.parseJSON();
  4. alert(obj.toJSONString());
  5. }

下面使用prototype写一个JSONajax例子。

先写一个 servlet (我的是servlet.ajax.JSONTest1.java) 就写一句话
java 代码
  1. response.getWriter().print("{\"name\":\"Violet\",\"occupation\":\"character\"}");

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

js 代码
  1. functionsendRequest(){
  2. varurl="/MyWebApp/JSONTest1";
  3. varmailAjax=newAjax.Request(
  4. url,
  5. {
  6. method:'get',
  7. onComplete:jsonResponse
  8. }
  9. );
  10. }
  11. functionjsonResponse(originalRequest){
  12. alert(originalRequest.responseText);
  13. varmyobj=originalRequest.responseText.parseJSON();
  14. alert(myobj.name);
  15. }

prototype-<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.1</st1:chsdate>.js中提供了JSON的方法,String.evalJSON(), 可以不使用json.js, 修改上面的方法

js 代码
  1. functionjsonResponse(originalRequest){
  2. alert(originalRequest.responseText);
  3. varmyobj=originalRequest.responseText.evalJSON(true);
  4. alert(myobj.name);
  5. }

JSON还提供了java的jar包 http://www.json.org/java/index.html API也很简单,下面举个例子

在javascript中填加请求参数

js 代码
  1. functionsendRequest(){
  2. varcarr=newCar("Dodge","CoronetR/T",1968,"yellow");
  3. varpars="car="+carr.toJSONString();
  4. varurl="/MyWebApp/JSONTest1";
  5. varmailAjax=newAjax.Request(
  6. url,
  7. {
  8. method:'get',
  9. parameters:pars,
  10. onComplete:jsonResponse
  11. }
  12. );
  13. }

使用JSON请求字符串就可以简单的生成JSONObject并进行解析,修改servlet添加JSON的处理(要使用json.jar)

java 代码
  1. privatevoiddoService(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{
  2. Strings3=request.getParameter("car");
  3. try{
  4. JSONObjectjsonObj=newJSONObject(s3);
  5. System.out.println(jsonObj.getString("model"));
  6. System.out.println(jsonObj.getInt("year"));
  7. }catch(JSONExceptione){
  8. e.printStackTrace();
  9. }
  10. response.getWriter().print("{\"name\":\"Violet\",\"occupation\":\"character\"}");
  11. }

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

java 代码
  1. privatevoiddoService(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{
  2. Strings3=request.getParameter("car");
  3. try{
  4. JSONObjectjsonObj=newJSONObject(s3);
  5. System.out.println(jsonObj.getString("model"));
  6. System.out.println(jsonObj.getInt("year"));
  7. }catch(JSONExceptione){
  8. e.printStackTrace();
  9. }
  10. JSONObjectresultJSON=newJSONObject();
  11. try{
  12. resultJSON.append("name","Violet")
  13. .append("occupation","developer")
  14. .append("age",newInteger(22));
  15. System.out.println(resultJSON.toString());
  16. }catch(JSONExceptione){
  17. e.printStackTrace();
  18. }
  19. response.getWriter().print(resultJSON.toString());
  20. }
js 代码
  1. functionjsonResponse(originalRequest){
  2. alert(originalRequest.responseText);
  3. varmyobj=originalRequest.responseText.evalJSON(true);
  4. alert(myobj.name);
  5. alert(myobj.age);
  6. }

参考

http://www.json.org/js.html

http://www.blogjava.net/Jkallen/archive/2006/03/28/37905.html

http://www.json.org/

http://www.prototypejs.org/learn/json

http://www.json.org/java/index.html

http://www.ibm.com/developerworks/cn/web/wa-ajaxintro10/index.html

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