json-lib的依赖包 :
commons-logging.jar
common.lang.jar
xom.jar(XMLObject Model)
commons-beanutils.jar
commons-collections-3.0.jar
ezmorph-0.9.2.jar
大概就是这些,第一个例子搞了一一个小时,依赖包太多了
json-lib可以将java中的Array,Collections,Object,XML转化成json对象
http://json-lib.sourceforge.net/usage.html
我按照官方文档写的例子:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.*;
public class Test {
/**
* @param args
*/
private static boolean[] boolArray={true,false};
private static List list = new ArrayList();
private static Map map=new HashMap();
private static Object[] test={new TestBean(),new TestBean()};
public static void main(String[] args) {
//转换Array
JSONArray jsonArray = JSONArray.fromObject( boolArray );
//System.out.println(jsonArray.toString());
JSONArray jsonArray1=JSONArray.fromObject("['1','2','3']");
//System.out.println(jsonArray1.toString());
list.add("first");
list.add("second");
//list.add(new TestBean());
//转换List
JSONArray jsonList = JSONArray.fromObject(list);
System.out.println(jsonList);
//转换map
map.put("name", "windfree");
map.put("bool", Boolean.TRUE);
map.put("int",new Integer(0));
map.put( "arr", new String[]{"a","b"} );
map.put("func", "function (i){ return this.arr[i]; }");
map.put("bean",test);
JSONObject jsonMap = JSONObject.fromObject(map);
//System.out.println(jsonMap);
//转换Bean
JSONObject jsonBean=JSONObject.fromObject(new TestBean());
//System.out.println(jsonBean);
}
}
输出结果
:
[true,false]
["1","2","3"]
["first","second"]
{"bean":[{"name":"windfree","pojoId":1,"func1":function(i){ return this.options[i]; },"func2":function(i){ return this.options[i]; },"options":["a","f"]},
{"name":"windfree","pojoId":1,
"func1":function(i){ return this.options[i]; },
"func2":function(i){ return this.options[i]; },
"options":["a","f"]}],"arr":["a","b"],"int":0,"name":"windfree",
"func":function (i){ return this.arr[i]; },
"bool":true}
{"name":"windfree","pojoId":1,"func1":function(i){ return this.options[i]; },"func2":function(i){ return this.options[i]; },"options":["a","f"]}
最近也在看GWT,GWT包中有一关于json的例子,
http://code.google.com/webtoolkit/documentation/examples/jsonrpc/demo.html
例子中的json对象为一个js文件,我用servlet重新写了一下。
Thumbnail类:
package com.windfree.server;
public class Thumbnail {
private String Url="http://scd.mm-c1.yimg.com/image/1135881977";
private int Height=120;
private int Width=99;
public int getHeight() {
return Height;
}
public void setHeight(int height) {
Height = height;
}
public String getUrl() {
return Url;
}
public void setUrl(String url) {
Url = url;
}
public int getWidth() {
return Width;
}
public void setWidth(int width) {
Width = width;
}
public Thumbnail(String url, int height, int width) {
super();
Url = url;
Height = height;
Width = width;
}
}
Result类:
package com.windfree.server;
public class Result {
private String Title;
private String Url;
private String ClickUrl;
private String RefererUrl;
private String FileFormat;
private int Height;
private int Width;
private Thumbnail thumbnail;
public Result(String title, String url, String clickUrl, String refererUrl, String fileFormat, int height, int width, Thumbnail thumbnail) {
super();
Title = title;
Url = url;
ClickUrl = clickUrl;
RefererUrl = refererUrl;
FileFormat = fileFormat;
Height = height;
Width = width;
this.thumbnail = thumbnail;
}
public String getClickUrl() {
return ClickUrl;
}
public void setClickUrl(String clickUrl) {
ClickUrl = clickUrl;
}
public String getFileFormat() {
return FileFormat;
}
public void setFileFormat(String fileFormat) {
FileFormat = fileFormat;
}
public int getHeight() {
return Height;
}
public void setHeight(int height) {
Height = height;
}
public String getRefererUrl() {
return RefererUrl;
}
public void setRefererUrl(String refererUrl) {
RefererUrl = refererUrl;
}
public Thumbnail getThumbnail() {
return thumbnail;
}
public void setThumbnail(Thumbnail thumbnail) {
this.thumbnail = thumbnail;
}
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
public String getUrl() {
return Url;
}
public void setUrl(String url) {
Url = url;
}
public int getWidth() {
return Width;
}
public void setWidth(int width) {
Width = width;
}
}
JSONHttpServlet类:
package com.windfree.server;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
public class JSONHttpServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
private static Map map=new HashMap();
private static Map map2=new HashMap();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Thumbnail tmail1=new Thumbnail("http://scd.mm-c1.yimg.com/image/1135881977",200,203);
Thumbnail tmail2=new Thumbnail("http://scd.mm-c1.yimg.com/image/1135881977",100,100);
Result reulst1=new Result("111","222","333","444","555",100,100,tmail1);
Result reulst2=new Result("111","222","333","444","555",100,100,tmail2);
map.put("totalResultsAvailable", "144429");
map.put("totalResultsReturned", 2);
map.put("firstResultPosition", 1);
map.put("result",new Result[]{reulst1,reulst2});
map2.put("Results", map);
JSONObject jsonMap=JSONObject.fromObject(map2);
PrintWriter out = response.getWriter();
out.println(jsonMap.toString());
}
}
在例子中的配置文件中的配置文件(JSON.gwt.xml)增加
<servlet path="/jsonTest"
class="com.windfree.server.JSONHttpServlet"/>
同时将JSON.java中的URL改为/jsonTest。就可以了。
结果: