JSON的基本用法--JSON详解

文章来源http://www.goomoon.com/it/web/js/7960.html

虽说是springMVC的暂时可以参考一下

JSON(JavaScriptObject Notation)是一种轻量级的数据交换格式。简单地说,JSON可以将JavaScript对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且JSON可以表示比"名称/值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

     下面举几个简单的实例来介绍Json,因为JSON是javascript的原生格式,因此不需要任何特殊的API包或工具包。
      实例一
01 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
02     pageEncoding="ISO-8859-1"%>
03 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
04 <html>
05 <head>
06 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
07 <title>Insert title here</title>
08 <script type="text/javascript">
09  
10     function testJson(){
11         var user =
12         {
13             "name":"tom",
14             "age":11,
15             "info":{"tel":"lf","cellphone":"1223"},
16             "address":
17                 [
18                     {"city":"lf","postcode":"111"},
19                     {"city":"bj","postcode":"222"},
20                 ]
21         }
22              
23         alert(user.name);
24         alert(user.info.cellphone);
25         alert(user.address[1].postcode);       
26     }
27 </script>
28 </head>
29 <body>
30     <input type="button" value="TestJson" onclick="testJson()">
31 </body>
32 </html>
   可直接运行测试。
      实例二
   下面这个实例是前后台如何交互的实例,首先把环境搭起来,创建一个Maven项目json_test,具体创建过程不再赘余,pom.xml文件:
03   <modelVersion>4.0.0</modelVersion>
04   <groupId>com.tgb</groupId>
05   <artifactId>json_test</artifactId>
06   <packaging>war</packaging>
07   <version>0.0.1-SNAPSHOT</version>
08   <name>json_test Maven Webapp</name>
09   <url>http://maven.apache.org</url>
10   <dependencies>
11     <dependency>
12       <groupId>junit</groupId>
13       <artifactId>junit</artifactId>
14       <version>4.0</version>
15       <scope>test</scope>
16     </dependency>
17     <dependency>
18         <groupId>commons-lang</groupId>
19         <artifactId>commons-lang</artifactId>
20         <version>2.4</version>
21     </dependency>
22      <dependency>
23         <groupId>commons-beanutils</groupId>
24         <artifactId>commons-beanutils</artifactId>
25         <version>1.7.0</version>
26     </dependency
27     <dependency>
28         <groupId>commons-collections</groupId>
29         <artifactId>commons-collections</artifactId>
30         <version>3.2</version>
31     </dependency>
32     <dependency>
33         <groupId>commons-logging</groupId>
34         <artifactId>commons-logging</artifactId>
35         <version>1.1.1</version>
36     </dependency>
37     <dependency>
38         <groupId>net.sf.ezmorph</groupId>
39         <artifactId>ezmorph</artifactId>
40         <version>1.0.6</version>
41     </dependency>
42     <dependency>
43         <groupId>net.sf.json-lib</groupId>
44         <artifactId>json-lib</artifactId>
45         <version>2.4</version>
46         <classifier>jdk15</classifier>
47     </dependency>
48     <dependency>
49         <groupId>org.springframework</groupId>
50         <artifactId>spring-webmvc</artifactId>
51         <version>3.0.4.RELEASE</version>
52     </dependency>
53                  
54   </dependencies>
55   <build>
56     <finalName>json_test</finalName>
57   </build>
58 </project>
Web.xml 配置如下
01 <?xml version="1.0" encoding="UTF-8"?>
03   <display-name>json_test</display-name>
04   <welcome-file-list>
05     <welcome-file>index.jsp</welcome-file>
06   </welcome-file-list>
07    
08   <servlet>
09     <servlet-name>springMVC</servlet-name>
10     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
11     <load-on-startup>1</load-on-startup>
12   </servlet>
13    
14   <servlet-mapping>
15     <servlet-name>springMVC</servlet-name>
16     <url-pattern>/</url-pattern>
17   </servlet-mapping>
18 </web-app>
SpringMVC 的配置文件和 web.xml 文件在同一个目录下, springMVC-servlet.xml
01 <?xml version="1.0" encoding="UTF-8"?>
06     xsi:schemaLocation="http://www.springframework.org/schema/beans
12      
13     <context:component-scan base-package="com.tgb.json" />
14  
15     <mvc:annotation-driven />
16       
17     <mvc:resources location="/js/" mapping="/js/**"/>
18 </beans>
上面关于SpringMVC的东西也不多讲,因为这不是要讲的重点。项目中还会用到Jquery,因此大家自行下载jquery包,放到webapp/js包下。
     下面开始编写后台的代码,首先创建一个POJO类User:
01 package com.tgb.json;
02  
03 public class User {
04  
05     private String username;
06      
07     private int age;
08  
09     public String getUsername() {
10         return username;
11     }
12  
13     public void setUsername(String username) {
14         this.username = username;
15     }
16  
17     public int getAge() {
18         return age;
19     }
20  
21     public void setAge(int age) {
22         this.age = age;
23     }
24 }
然后创建 TestJson 类,在这个类中,我写了三个方法,是分别测试传递 User 对象、 List 集合和 Map 的。
01 package com.tgb.json;
02 import java.io.PrintWriter;
03 import java.util.ArrayList;
04 import java.util.HashMap;
05 import java.util.List;
06 import java.util.Map;
07  
08 import javax.servlet.http.HttpServletRequest;
09 import javax.servlet.http.HttpServletResponse;
10  
11 import net.sf.json.JSONArray;
12 import net.sf.json.JSONObject;
13  
14 import org.springframework.stereotype.Controller;
15 import org.springframework.web.bind.annotation.RequestMapping;
16  
17 @Controller
18 public class TestJson {
19      
20     @RequestMapping("logon.do")
21     public String logon(HttpServletRequest request,HttpServletResponse response){
22         return "/test/addUser";
23     }
24      
25     //返回User对象
26     @RequestMapping("/test/json1")
27     public void returnUser(HttpServletRequest request,HttpServletResponse response) throws Exception{
28          
29         response.setContentType("text/html");
30         PrintWriter out = response.getWriter();
31          
32         User u1 = new User();
33         u1.setUsername("tom1");
34         u1.setAge(11);
35      
36         //Json返回实体
37         JSONObject jsonObject = JSONObject.fromObject(u1);
38         //返给ajax请求
39         out.print(jsonObject);
40     }
41      
42     //返回List
43     @RequestMapping("/test/json2")
44     public void returnList(HttpServletRequest request,HttpServletResponse response) throws Exception{
45          
46         response.setContentType("text/html");
47         PrintWriter out = response.getWriter();
48          
49         //传递List
50         List<User> list = new ArrayList<User>();
51          
52         User u1 = new User();
53         u1.setUsername("tom1");
54         u1.setAge(11);
55      
56         User u2 = new User();
57         u2.setUsername("jack");
58         u2.setAge(22);
59          
60         list.add(u1);
61         list.add(u2);
62         //Json返回list
63         JSONArray jsonArray = JSONArray.fromObject(list);
64         //返给ajax请求
65         out.print(jsonArray);
66     }
67      
68     //返回Map
69     @RequestMapping("/test/json3")
70     public void returnMap(HttpServletRequest request,HttpServletResponse response) throws Exception{
71          
72         response.setContentType("text/html");
73         PrintWriter out = response.getWriter();
74          
75         Map<String,User> map = new HashMap<String,User>();
76          
77         User u1 = new User();
78         u1.setUsername("tom1");
79         u1.setAge(11);
80      
81         User u2 = new User();
82         u2.setUsername("jack");
83         u2.setAge(22);
84          
85         map.put("u1", u1);
86         map.put("u2", u2);
87          
88         //Json返回map
89         JSONObject jsonObject = JSONObject.fromObject(map);
90         //返给ajax请求
91         out.print(jsonObject);
92     }  
93 }
完成了后台代码的编写,页面上就需要获取后台传过来的 Json 数据,并将它显示出来,创建页面 testJson.jsp
01 <%@ page language="java" contentType="text/html; charset=utf-8"
02     pageEncoding="utf-8"%>
03 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
04 <html>
05 <head>
06 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
07 <script type="text/javascript" src="json_test/../js/jquery-1.7.1.js"></script>
08 <title>Insert title here</title>
09 <script type="text/javascript">
10      
11     //获取User对象
12     function getJsonObject(){
13         $.ajax({
14             type:"POST",
15             url:"/json_test/test/json1",
16             dataType:"json",
17             success:function(json){
18                 alert(json.username);
19                 alert(json.age);
20             },
21             error:function(){
22                 alert("网络错误!");
23             }
24         });
25     }
26      
27     //获取List对象
28     function getJsonList(){
29         $.ajax({
30             type:"POST",
31             url:"/json_test/test/json2",
32             dataType:"json",
33             success:function(json){
34                 alert(json[0].username);
35                 alert(json[1].age);
36             },
37             error:function(){
38                 alert("网络错误!");
39             }
40         });
41     }  
42      
43     //获取Map对象
44     function getJsonMap(){
45         $.ajax({
46             type:"POST",
47             url:"/json_test/test/json3",
48             dataType:"json",
49             success:function(json){
50                 alert(json.u1.username);
51                 alert(json.u2.age);
52             },
53             error:function(){
54                 alert("网络错误!");
55             }
56         });
57     }  
58 </script>
59 </head>
60 <body>
61     <input type="button" value="获取User对象" onclick="getJsonObject()"><br/>
62     <input type="button" value="获取List" onclick="getJsonList()"><br/>
63     <input type="button" value="获取Map" onclick="getJsonMap()">
64 </body>
65 </html>
通过以上这几个例子基本能说明 Json 的大致用途,他和 XML 的联系与区别,大家可自行查阅。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值