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
- package com.json.domain;
-
- public class Person {
- private int id;
- private String name;
- private String address;
-
- public Person() {
- super();
- }
- public Person(int id, String name, String addrss) {
- super();
- this.id = id;
- this.name = name;
- this.address = addrss;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- @Override
- public String toString() {
- return "Person [addrss=" + address + ", id=" + id + ", name=" + name
- + "]";
- }
-
- }
JsonService.java
- package com.json.service;
-
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
-
- import com.json.domain.Person;
-
- public class JsonService {
-
- public JsonService() {
- }
-
- public Person getPerson(){
- Person person = new Person(1001,"jack","上海黃浦區");
- return person;
- }
- public List<Person> getListPerson(){
- List<Person> list = new ArrayList<Person>();
- Person person1 = new Person(1001,"jack","上海黃浦區");
- Person person2 = new Person(1002,"rose","上海闵行區");
- Person person3 = new Person(1003,"mick","上海黃浦區");
- list.add(person1);
- list.add(person2);
- list.add(person3);
- return list;
- }
-
- public List<String> getListString(){
- List<String> list = new ArrayList<String>();
- list.add("北京");
- list.add("上海");
- list.add("湖南");
- return list;
- }
-
- public List<Map<String,Object>> getListMaps(){
- List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
- Map<String,Object> map1 = new HashMap<String, Object>();
- Map<String,Object> map2 = new HashMap<String, Object>();
- map1.put("id", 1001);
- map1.put("name", "jack");
- map1.put("address", "北京");
- map2.put("id", 1001);
- map2.put("name", "rose");
- map2.put("address", "上海");
- list.add(map1);
- list.add(map2);
- return list;
- }
- }
JsonServlet.java
- package com.json.servlet;
-
- import java.io.IOException;
- import java.io.PrintWriter;
-
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- import com.json.service.JsonService;
- import com.json.tools.JsonTools;
-
- public class JsonServlet extends HttpServlet {
- private JsonService service;
- /**
- * Constructor of the object.
- */
- public JsonServlet() {
- super();
- }
-
- /**
- * Destruction of the servlet. <br>
- */
- public void destroy() {
- super.destroy(); // Just puts "destroy" string in log
- // Put your code here
- }
-
- /**
- * The doGet method of the servlet. <br>
- *
- * This method is called when a form has its tag value method equals to get.
- *
- * @param request the request send by the client to the server
- * @param response the response send by the server to the client
- * @throws ServletException if an error occurred
- * @throws IOException if an error occurred
- */
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
-
- this.doPost(request, response);
- }
-
- /**
- * The doPost method of the servlet. <br>
- *
- * This method is called when a form has its tag value method equals to post.
- *
- * @param request the request send by the client to the server
- * @param response the response send by the server to the client
- * @throws ServletException if an error occurred
- * @throws IOException if an error occurred
- */
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
-
- response.setContentType("text/html;charset=utf-8");
- request.setCharacterEncoding("utf-8");
- response.setCharacterEncoding("utf-8");
- PrintWriter out = response.getWriter();
-
- String jsonString = "";
- String action_flag = request.getParameter("action_flag");
- if(action_flag.equals("person")){
- jsonString = JsonTools.createJsonString("person", service.getPerson());
- }else if(action_flag.equals("persons")){
- jsonString = JsonTools.createJsonString("persons", service.getListPerson());
- }else if(action_flag.equals("listString")){
- jsonString = JsonTools.createJsonString("listString", service.getListString());
- }else if(action_flag.equals("listMap")){
- jsonString = JsonTools.createJsonString("listMap", service.getListMaps());
- }
- out.println(jsonString);
- out.flush();
- out.close();
- }
-
- /**
- * Initialization of the servlet. <br>
- *
- * @throws ServletException if an error occurs
- */
- public void init() throws ServletException {
- service = new JsonService();
- }
-
- }
web.xml中servlet映射
- <servlet>
- <description>This is the description of my J2EE component</description>
- <display-name>This is the display name of my J2EE component</display-name>
- <servlet-name>JsonServlet</servlet-name>
- <servlet-class>com.json.servlet.JsonServlet</servlet-class>
- </servlet>
-
- <servlet-mapping>
- <servlet-name>JsonServlet</servlet-name>
- <url-pattern>/servlet/JsonServlet</url-pattern>
- </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"}]}