歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android解析JSON方式

JSON數據格式的定義:

JSON的全稱是:JavaScript Object Notation,是一種輕量級的數據交換格式。它構建於兩種結構:

1、"名稱/值" 對的集合(a collection of name / value pairs)。不同的語言中,它被理解為對象(Object),記錄(Record),結構(struct),字典(Dictionary),哈希表(HashTable),有鍵列表(Keyed list),或者關聯數組(Associative array)。

2、值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數組(array)。

JSON數據格式的特點:

JSON對象時一個無序的" '名稱/值' 對"的集合,一個對象以“{”(左括號)開始, 以"}"(右括號)結束,每個"名稱"後跟一個":"(冒號),名稱/值 對之間使用","(逗號)分隔。

如:

{

"name":"jackson",

"age":100

}

稍微復雜一點的情況,數組是值的有序集合,一個數組以“[”(左中括號)開始,以"]"(右中括號)結束。值之間使用","(逗號)分隔。

如:

{

"studengs":

[

{"name": "jackson", "age": 100},

{"name": "michael", "age": 51},

]

}

首先,我們搭建一個服務器的工程:JsonProject這個項目,工程目錄結構:

源代碼:

Person.java

 

  1. package com.json.domain; 
  2.  
  3. public class Person { 
  4.     private int id; 
  5.     private String name; 
  6.     private String address; 
  7.      
  8.     public Person() { 
  9.         super(); 
  10.     } 
  11.     public Person(int id, String name, String addrss) { 
  12.         super(); 
  13.         this.id = id; 
  14.         this.name = name; 
  15.         this.address = addrss; 
  16.     } 
  17.     public int getId() { 
  18.         return id; 
  19.     } 
  20.     public void setId(int id) { 
  21.         this.id = id; 
  22.     } 
  23.     public String getName() { 
  24.         return name; 
  25.     } 
  26.     public void setName(String name) { 
  27.         this.name = name; 
  28.     } 
  29.     public String getAddress() { 
  30.         return address; 
  31.     } 
  32.     public void setAddress(String address) { 
  33.         this.address = address; 
  34.     } 
  35.     @Override 
  36.     public String toString() { 
  37.         return "Person [addrss=" + address + ", id=" + id + ", name=" + name 
  38.                 + "]"; 
  39.     } 
  40.      

JsonService.java

  1. package com.json.service; 
  2.  
  3. import java.util.ArrayList; 
  4. import java.util.HashMap; 
  5. import java.util.List; 
  6. import java.util.Map; 
  7.  
  8. import com.json.domain.Person; 
  9.  
  10. public class JsonService { 
  11.  
  12.     public JsonService() { 
  13.     } 
  14.      
  15.     public Person getPerson(){ 
  16.         Person person = new Person(1001,"jack","上海黃浦區"); 
  17.         return person; 
  18.     } 
  19.     public List<Person> getListPerson(){ 
  20.         List<Person> list = new ArrayList<Person>(); 
  21.         Person person1 = new Person(1001,"jack","上海黃浦區"); 
  22.         Person person2 = new Person(1002,"rose","上海闵行區"); 
  23.         Person person3 = new Person(1003,"mick","上海黃浦區"); 
  24.         list.add(person1); 
  25.         list.add(person2); 
  26.         list.add(person3); 
  27.         return list; 
  28.     } 
  29.      
  30.     public List<String> getListString(){ 
  31.         List<String> list = new ArrayList<String>(); 
  32.         list.add("北京"); 
  33.         list.add("上海"); 
  34.         list.add("湖南"); 
  35.         return list; 
  36.     } 
  37.      
  38.     public List<Map<String,Object>> getListMaps(){ 
  39.         List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); 
  40.         Map<String,Object> map1 = new HashMap<String, Object>(); 
  41.         Map<String,Object> map2 = new HashMap<String, Object>(); 
  42.         map1.put("id", 1001); 
  43.         map1.put("name", "jack"); 
  44.         map1.put("address", "北京"); 
  45.         map2.put("id", 1001); 
  46.         map2.put("name", "rose"); 
  47.         map2.put("address", "上海"); 
  48.         list.add(map1); 
  49.         list.add(map2); 
  50.         return list; 
  51.     } 

JsonServlet.java

  1. package com.json.servlet; 
  2.  
  3. import java.io.IOException; 
  4. import java.io.PrintWriter; 
  5.  
  6. import javax.servlet.ServletException; 
  7. import javax.servlet.http.HttpServlet; 
  8. import javax.servlet.http.HttpServletRequest; 
  9. import javax.servlet.http.HttpServletResponse; 
  10.  
  11. import com.json.service.JsonService; 
  12. import com.json.tools.JsonTools; 
  13.  
  14. public class JsonServlet extends HttpServlet { 
  15.     private JsonService service; 
  16.     /** 
  17.      * Constructor of the object. 
  18.      */ 
  19.     public JsonServlet() { 
  20.         super(); 
  21.     } 
  22.  
  23.     /** 
  24.      * Destruction of the servlet. <br> 
  25.      */ 
  26.     public void destroy() { 
  27.         super.destroy(); // Just puts "destroy" string in log 
  28.         // Put your code here 
  29.     } 
  30.  
  31.     /** 
  32.      * The doGet method of the servlet. <br> 
  33.      * 
  34.      * This method is called when a form has its tag value method equals to get. 
  35.      *   
  36.      * @param request the request send by the client to the server 
  37.      * @param response the response send by the server to the client 
  38.      * @throws ServletException if an error occurred 
  39.      * @throws IOException if an error occurred 
  40.      */ 
  41.     public void doGet(HttpServletRequest request, HttpServletResponse response) 
  42.             throws ServletException, IOException { 
  43.  
  44.         this.doPost(request, response); 
  45.     } 
  46.  
  47.     /** 
  48.      * The doPost method of the servlet. <br> 
  49.      * 
  50.      * This method is called when a form has its tag value method equals to post. 
  51.      *   
  52.      * @param request the request send by the client to the server 
  53.      * @param response the response send by the server to the client 
  54.      * @throws ServletException if an error occurred 
  55.      * @throws IOException if an error occurred 
  56.      */ 
  57.     public void doPost(HttpServletRequest request, HttpServletResponse response) 
  58.             throws ServletException, IOException { 
  59.  
  60.         response.setContentType("text/html;charset=utf-8"); 
  61.         request.setCharacterEncoding("utf-8"); 
  62.         response.setCharacterEncoding("utf-8"); 
  63.         PrintWriter out = response.getWriter(); 
  64.          
  65.         String jsonString = ""; 
  66.         String action_flag = request.getParameter("action_flag"); 
  67.         if(action_flag.equals("person")){ 
  68.             jsonString = JsonTools.createJsonString("person", service.getPerson()); 
  69.         }else if(action_flag.equals("persons")){ 
  70.             jsonString = JsonTools.createJsonString("persons", service.getListPerson()); 
  71.         }else if(action_flag.equals("listString")){ 
  72.             jsonString = JsonTools.createJsonString("listString", service.getListString()); 
  73.         }else if(action_flag.equals("listMap")){ 
  74.             jsonString = JsonTools.createJsonString("listMap", service.getListMaps()); 
  75.         } 
  76.         out.println(jsonString); 
  77.         out.flush(); 
  78.         out.close(); 
  79.     } 
  80.  
  81.     /** 
  82.      * Initialization of the servlet. <br> 
  83.      * 
  84.      * @throws ServletException if an error occurs 
  85.      */ 
  86.     public void init() throws ServletException { 
  87.         service = new JsonService(); 
  88.     } 
  89.  

web.xml中servlet映射

  1. <servlet> 
  2.     <description>This is the description of my J2EE component</description> 
  3.     <display-name>This is the display name of my J2EE component</display-name> 
  4.     <servlet-name>JsonServlet</servlet-name> 
  5.     <servlet-class>com.json.servlet.JsonServlet</servlet-class> 
  6.   </servlet> 
  7.  
  8.   <servlet-mapping> 
  9.     <servlet-name>JsonServlet</servlet-name> 
  10.     <url-pattern>/servlet/JsonServlet</url-pattern> 
  11.   </servlet-mapping> 

我們通過浏覽器

訪問地址一:http://wulianghuan-pc:8080/JsonProject/servlet/JsonServlet?action_flag=person

輸出以下結果:

{"persons":{"address":"上海黃浦區","id":1001,"name":"jack"}}

 

 


訪問地址二:http://wulianghuan-pc:8080/JsonProject/servlet/JsonServlet?action_flag=persons

輸出以下結果:

{"persons":[{"address":"上海黃浦區","id":1001,"name":"jack"},{"addrss":"上海闵行區","id":1002,"name":"rose"},{"address":"上海黃浦區","id":1003,"name":"mick"}]}

 

 

訪問地址三:http://wulianghuan-pc:8080/JsonProject/servlet/JsonServlet?action_flag=listString

輸出以下結果:

{"persons":["北京","上海","湖南"]}

 

 

訪問地址四:http://wulianghuan-pc:8080/JsonProject/servlet/JsonServlet?action_flag=listMap

輸出以下結果:

{"persons":[{"id":1001,"address":"北京","name":"jack"},{"id":1001,"address":"上海","name":"rose"}]}

Copyright © Linux教程網 All Rights Reserved