从Java 类产生json(json-lib)

从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);
    


    

    }

}


输出结果
[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。就可以了。
   结果:
         
 

posted on 2007-01-12 16:22 windfree 阅读(7730) 评论(0)   编辑   收藏 所属分类: ajax 、 java

你可能感兴趣的:(从Java 类产生json(json-lib))