歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android解析JSON方式

Android解析JSON方式

日期:2017/3/1 10:00:41   编辑:Linux編程

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

JsonService.java

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

JsonServlet.java

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

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. <servlet-mapping>
  8. <servlet-name>JsonServlet</servlet-name>
  9. <url-pattern>/servlet/JsonServlet</url-pattern>
  10. </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