JSON在服务器端的生成,和所用jar包

先生成一个service类,用于生成指定的数据类型。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class JsonService {
	public JsonService() {

	}

	public Person getPerson() {
		Person person = new Person(1001, "jack", "beijing");
		return person;
	}

	public List getList() {
		List list = new ArrayList();
		Person person1 = new Person(1001, "jack", "beijing");
		Person person2 = new Person(1002, "rose", "gongdong");
		list.add(person1);
		list.add(person2);
		return list;
	}

	public List getListString() {
		List list = new ArrayList();
		list.add("beijing");
		list.add("shanghai");
		list.add("jinna");
		return list;
	}

	public List> getListMap() {
		List> list = new ArrayList>();
		Map map1 = new HashMap();
		map1.put("id", 1001);
		map1.put("name", "liming");
		Map map2 = new HashMap();
		map2.put("id", 1002);
		map2.put("name", "zhangsan");
		list.add(map1);
		list.add(map2);
		return list;
	}
}
我们创建JsonTool类,用于生成json数据。

import net.sf.json.JSONObject;

public class JsonTools {
	public JsonTools() {

	}

	/**
	 * 
	 * @param key表示JSON字符串的头信息
	 * @param value是对解析的集合的类型
	 * @return
	 */
	public static String JsonCreat(String key, Object value) {
		JSONObject jsonObject = new JSONObject();
		jsonObject.put(key, value);
		return jsonObject.toString();
	}
}
下面是创建的一个测试类,调用不同的数据形式,来生成不同的JSON数据类型。

public class TestJson {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String msg="";
		JsonService service=new JsonService();
		/*Person person=service.getPerson();
		msg=JsonTools.JsonCreat("person", person);
		System.out.println(msg);*/
		
		
		//msg=JsonTools.JsonCreat("persons", service.getList());
		//System.out.println(msg);
		
		//msg=JsonTools.JsonCreat("persons", service.getListString());
		//System.out.println(msg.toString());
		
		msg=JsonTools.JsonCreat("persons", service.getListMap());
		System.out.println(msg.toString());
		
	}

}

输出结果{"person":[{"address":"beijing","id":1001,"name":"jack"},{"address":"gongdong","id":1002,"name":"rose"}]};这是list的。


在使用服务器时,我们调用servlet来返回客户端一个json数据。特别注意在servlet生命周期中,我们需要将service初始化。

public class JsonAction extends HttpServlet {
	private JsonService jsonService;

	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");
		response.setCharacterEncoding("utf-8");
		request.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter();
		String jsonString = JsonTools.JsonCreat("person", jsonService
				.getList());
		out.println(jsonString);
		out.flush();
		out.close();
	}

	@Override
	public void init() throws ServletException {
		// TODO Auto-generated method stub
		super.init();
		jsonService=new JsonService();
	}

}
当访问这个servlet时,返回的就是一个一个 JSON数据。

此工程我们用到了几个包

commons-lang.jar用来处理Java基本对象方法的工具类包,可以简化很多平时经常要用到的写法,例如判断字符串是否为空等等

commons-beanutils.jar是对bean操作的类,可以访问类的属性及GET和SET方法.

commons-collections.jar   为Java标准的Collections API提供了相当好的补充。在此基础上对其常用的数据结构操作进行了很好的封装、抽象和补充。保证性能的同时大大简化代码。

commons-logging.jar 是输出LOG用的

ezmorph.jar使用json时候将会用到的一个jar包,发现这个包在网上提供的比较少.缺少这个包可能导致Could not initialize class net.sf.json.JsonConfig

json-lib-2.2.2-jdk15.jarjson对跨项目的传输数据有着很好的封装,项目之间只需要JsonArray.ForObject(Obejct o)格式化json格式进行传输

这些包下载点击:http://download.csdn.net/detail/fengzy1990/7726595

你可能感兴趣的:(开发案列)