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;}@Overridepublic 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"}]}




更多相关文章

  1. 自动化脚本
  2. 解析json格式数据
  3. Android简单计算器实现
  4. 上海靠谱社交公司职位:大前端负责人(对标阿里P9)/iOS架构师/Androi
  5. 2018年6月份Android上海找工作经历
  6. Bugly Android自动上传符号表
  7. Android中 Flutter实现自定义的APPbar
  8. android group by
  9. Android的项目不能直接引用可移植类库的项目解决方法

随机推荐

  1. Android之消息处理机制(二)Handler的本质-M
  2. [置顶] Android应用程序的自动更新升级(自
  3. android的Surface Flinger服务启动分析
  4. Android(安卓)之 串口通信
  5. 收藏-------------Android应用程序组件Co
  6. android 打开蓝牙设备 显示已经配对的蓝
  7. android layout_gravity失效的问题
  8. 三分钟搞定Android数据库升级
  9. Android消息机制源码解读
  10. (转载)Android显示GIF