先生成一个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<Person> getList() { List<Person> list = new ArrayList<Person>(); Person person1 = new Person(1001, "jack", "beijing"); Person person2 = new Person(1002, "rose", "gongdong"); list.add(person1); list.add(person2); return list; } public List<String> getListString() { List<String> list = new ArrayList<String>(); list.add("beijing"); list.add("shanghai"); list.add("jinna"); return list; } public List<Map<String, Object>> getListMap() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map1 = new HashMap<String, Object>(); map1.put("id", 1001); map1.put("name", "liming"); Map<String, Object> map2 = new HashMap<String, Object>(); 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()); } }
在使用服务器时,我们调用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