从Java 类产生json(json-lib)
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);
}
}
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"]}
["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;
}
}
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;
}
}
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());
}
}
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。就可以了。
结果: