先生成一个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
我们创建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