服务器端的工作就是将特定的数据类型转换为json字符串,然后客户端再将json字符串转换成原来的类型,所以json解析是跨平台数据格式转换的一个桥梁,
这里以最常用的对象类型,list包裹对象类型,list包裹String类型,以及list包裹Map对象类型4种情况为例简单介绍json的数据解析
服务器端json所用到的jar包下载(免积分) 服务器端源码下载(免积分)(因为csdn出现未知错误,暂时还没有上传,请稍后下载哦)
一、首先服务器端将数据转换为json格式
1,首先建立一个Person对象类,后面就是将person对象转换为json格式
2.我写了一个工具类,用来生成上述的四种类型的数据;
3.接下来就是写json数据类型的转换类了
4.进行测试,看是否将上述4种数据转换为了json的数据类型
-
package com.zml.test;
import com.zml.utils.DataUtil;
import com.zml.utils.JsonTools;
/**
-
@author zml2015
-
@Time:2016年2月2日 上午12:27:29
-
@version 1.0
*/
public class testjson {
public static void main(String[] args) {
String jsonString;
jsonString = JsonTools.createJsonString("person",DataUtil.getPerson());
System.out.println(jsonString);
jsonString = JsonTools.createJsonString("persons",DataUtil.getPersons());
System.out.println(jsonString);
jsonString = JsonTools.createJsonString("strings",DataUtil.getStrings());
System.out.println(jsonString);
jsonString = JsonTools.createJsonString("maps",DataUtil.getMaps());
System.out.println(jsonString);
}
}

5.测试成功后,建立Servlet类,以方便将json数据传输给客户端
package com.zml.test;
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.zml.utils.DataUtil;
import com.zml.utils.JsonTools;
/**
- @author zml2015
- @Time:2016年2月2日 下午10:54:26
- @version 1.0
*/
public class JsonServlet extends HttpServlet {
/**
- Constructor of the object.
*/
public JsonServlet() {
super();
}
/**
- Destruction of the servlet.
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
/**
*/
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 actionString = request.getParameter("action");
if (actionString.equals("person")) {
jsonString = JsonTools.createJsonString("person",DataUtil.getPerson());
} else if (actionString.equals("persons")) {
jsonString = JsonTools.createJsonString("persons",DataUtil.getPersons());
} else if (actionString.equals("strings")) {
jsonString = JsonTools.createJsonString("strings",DataUtil.getStrings());
} else if (actionString.equals("maps")) {
jsonString = JsonTools.createJsonString("maps",DataUtil.getMaps());
}
out.write(jsonString);
}
/**
- Initialization of the servlet.
- @throws ServletException
-
if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
通过网址访问可得到的JSON数据:




二、客户端解析json数据
这里暂时只贴出重要的解析部分,
需要注意的是上述,客户端和服务器端虽然都用到了JSONObject类,但是引用的不是一个jar包中的内容哦;客户端的是引用的 org.json.JSONObject;而服务器端引用的是net.sf.json.JSONObject;
(关于gson解析,和fastjson解析json数据有时间再补,今天就先写到这儿了)
关于Gson解析请移步到这 Andorid之Gson解析Json数据
如果,您认为这篇博客让您有些收获,不妨收藏一下。
如果,您希望更容易地发现我的新博客,不妨点击一下【加关注】。
因为,我的热情需要您的肯定和支持。
感谢您的阅读,如果文章中有错误或者您有什么好的建议,也欢迎您直接留言批评指教。Thanks,friends!