Java-json格式

[java]  view plain  copy
 print ?
  1. package com.mai.json;  
  2.   
  3. import static org.junit.Assert.assertEquals;  
  4.   
  5. import java.util.ArrayList;  
  6. import java.util.Date;  
  7. import java.util.HashMap;  
  8. import java.util.Iterator;  
  9. import java.util.List;  
  10. import java.util.Map;  
  11. import net.sf.ezmorph.Morpher;  
  12. import net.sf.ezmorph.MorpherRegistry;  
  13. import net.sf.ezmorph.bean.BeanMorpher;  
  14. import net.sf.json.JSONArray;  
  15. import net.sf.json.JSONObject;  
  16. import net.sf.json.util.JSONUtils;  
  17.   
  18. import org.apache.commons.beanutils.PropertyUtils;  
  19. import org.junit.Test;  
  20.   
  21. public class JsonLibTest {  
  22.   
  23.     /* 
  24.      *  普通类型、List、Collection等都是用JSONArray解析 
  25.      *   
  26.      *  Map、自定义类型是用JSONObject解析 
  27.      *  可以将Map理解成一个对象,里面的key/value对可以理解成对象的属性/属性值 
  28.      *  即{key1:value1,key2,value2......} 
  29.      *  
  30.      * 1.JSONObject是一个name:values集合,通过它的get(key)方法取得的是key后对应的value部分(字符串) 
  31.      *         通过它的getJSONObject(key)可以取到一个JSONObject,--> 转换成map, 
  32.      *         通过它的getJSONArray(key) 可以取到一个JSONArray , 
  33.      *  
  34.      *  
  35.      */  
  36.       
  37.     //一般数组转换成JSON  
  38.     @Test  
  39.     public void testArrayToJSON(){  
  40.         boolean[] boolArray = new boolean[]{true,false,true};    
  41.         JSONArray jsonArray = JSONArray.fromObject( boolArray );    
  42.         System.out.println( jsonArray );    
  43.         // prints [true,false,true]    
  44.     }  
  45.       
  46.       
  47.     //Collection对象转换成JSON  
  48.     @Test  
  49.     public void testListToJSON(){  
  50.         List list = new ArrayList();    
  51.         list.add( "first" );    
  52.         list.add( "second" );    
  53.         JSONArray jsonArray = JSONArray.fromObject( list );    
  54.         System.out.println( jsonArray );    
  55.         // prints ["first","second"]    
  56.     }  
  57.       
  58.       
  59.     //字符串json转换成json, 根据情况是用JSONArray或JSONObject  
  60.     @Test  
  61.     public void testJsonStrToJSON(){  
  62.         JSONArray jsonArray = JSONArray.fromObject( "['json','is','easy']" );    
  63.         System.out.println( jsonArray );    
  64.         // prints ["json","is","easy"]    
  65.     }  
  66.       
  67.       
  68.     //Map转换成json, 是用jsonObject  
  69.     @Test  
  70.     public void testMapToJSON(){  
  71.         Map map = new HashMap();    
  72.         map.put( "name""json" );    
  73.         map.put( "bool", Boolean.TRUE );    
  74.         map.put( "int"new Integer(1) );    
  75.         map.put( "arr"new String[]{"a","b"} );    
  76.         map.put( "func""function(i){ return this.arr[i]; }" );    
  77.             
  78.         JSONObject jsonObject = JSONObject.fromObject( map );    
  79.         System.out.println( jsonObject );    
  80.     }  
  81.       
  82.     //复合类型bean转成成json  
  83.     @Test  
  84.     public void testBeadToJSON(){  
  85.         MyBean bean = new MyBean();  
  86.         bean.setId("001");  
  87.         bean.setName("银行卡");  
  88.         bean.setDate(new Date());  
  89.           
  90.         List cardNum = new ArrayList();  
  91.         cardNum.add("农行");  
  92.         cardNum.add("工行");  
  93.         cardNum.add("建行");  
  94.         cardNum.add(new Person("test"));  
  95.           
  96.         bean.setCardNum(cardNum);  
  97.           
  98.         JSONObject jsonObject = JSONObject.fromObject(bean);  
  99.         System.out.println(jsonObject);  
  100.           
  101.     }  
  102.       
  103.     //普通类型的json转换成对象  
  104.     @Test  
  105.     public void testJSONToObject() throws Exception{  
  106.         String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";    
  107.         JSONObject jsonObject = JSONObject.fromObject( json );   
  108.         System.out.println(jsonObject);  
  109.         Object bean = JSONObject.toBean( jsonObject );   
  110.         assertEquals( jsonObject.get( "name" ), PropertyUtils.getProperty( bean, "name" ) );    
  111.         assertEquals( jsonObject.get( "bool" ), PropertyUtils.getProperty( bean, "bool" ) );    
  112.         assertEquals( jsonObject.get( "int" ), PropertyUtils.getProperty( bean, "int" ) );    
  113.         assertEquals( jsonObject.get( "double" ), PropertyUtils.getProperty( bean, "double" ) );    
  114.         assertEquals( jsonObject.get( "func" ), PropertyUtils.getProperty( bean, "func" ) );    
  115.         System.out.println(PropertyUtils.getProperty(bean, "name"));  
  116.         System.out.println(PropertyUtils.getProperty(bean, "bool"));  
  117.         System.out.println(PropertyUtils.getProperty(bean, "int"));  
  118.         System.out.println(PropertyUtils.getProperty(bean, "double"));  
  119.         System.out.println(PropertyUtils.getProperty(bean, "func"));  
  120.         System.out.println(PropertyUtils.getProperty(bean, "array"));  
  121.           
  122.         List arrayList = (List)JSONArray.toCollection(jsonObject.getJSONArray("array"));  
  123.         for(Object object : arrayList){  
  124.             System.out.println(object);  
  125.         }  
  126.           
  127.     }  
  128.       
  129.       
  130.     //将json解析成复合类型对象, 包含List  
  131.     @Test  
  132.     public void testJSONToBeanHavaList(){  
  133.         String json = "{list:[{name:'test1'},{name:'test2'}],map:{test1:{name:'test1'},test2:{name:'test2'}}}";  
  134. //        String json = "{list:[{name:'test1'},{name:'test2'}]}";  
  135.         Map classMap = new HashMap();  
  136.         classMap.put("list", Person.class);  
  137.         MyBeanWithPerson diyBean = (MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json),MyBeanWithPerson.class , classMap);  
  138.         System.out.println(diyBean);  
  139.           
  140.         List list = diyBean.getList();  
  141.         for(Object o : list){  
  142.             if(o instanceof Person){  
  143.                 Person p = (Person)o;  
  144.                 System.out.println(p.getName());  
  145.             }  
  146.         }  
  147.     }  
  148.       
  149.       
  150.     //将json解析成复合类型对象, 包含Map  
  151.     @Test  
  152.     public void testJSONToBeanHavaMap(){  
  153.         //把Map看成一个对象  
  154.         String json = "{list:[{name:'test1'},{name:'test2'}],map:{testOne:{name:'test1'},testTwo:{name:'test2'}}}";  
  155.         Map classMap = new HashMap();  
  156.         classMap.put("list", Person.class);  
  157.         classMap.put("map", Map.class);  
  158.         //使用暗示,直接将json解析为指定自定义对象,其中List完全解析,Map没有完全解析  
  159.         MyBeanWithPerson diyBean = (MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json),MyBeanWithPerson.class , classMap);  
  160.         System.out.println(diyBean);  
  161.           
  162.         System.out.println("do the list release");  
  163.         List<Person> list = diyBean.getList();  
  164.         for(Person o : list){  
  165.             Person p = (Person)o;  
  166.             System.out.println(p.getName());  
  167.         }  
  168.           
  169.         System.out.println("do the map release");  
  170.           
  171.         //先往注册器中注册变换器,需要用到ezmorph包中的类  
  172.         MorpherRegistry morpherRegistry = JSONUtils.getMorpherRegistry();  
  173.         Morpher dynaMorpher = new BeanMorpher( Person.class,  morpherRegistry);    
  174.         morpherRegistry.registerMorpher( dynaMorpher );    
  175.           
  176.           
  177.         Map map = diyBean.getMap();  
  178.         /*这里的map没进行类型暗示,故按默认的,里面存的为net.sf.ezmorph.bean.MorphDynaBean类型的对象*/  
  179.         System.out.println(map);  
  180.       /*输出: 
  181.         {testOne=net.sf.ezmorph.bean.MorphDynaBean@f73c1[ 
  182.           {name=test1} 
  183.         ], testTwo=net.sf.ezmorph.bean.MorphDynaBean@186c6b2[ 
  184.           {name=test2} 
  185.         ]} 
  186.       */  
  187.         List<Person> output = new ArrayList();    
  188.         for( Iterator i = map.values().iterator(); i.hasNext(); ){    
  189.             //使用注册器对指定DynaBean进行对象变换  
  190.            output.add( (Person)morpherRegistry.morph( Person.class, i.next() ) );    
  191.         }    
  192.           
  193.         for(Person p : output){  
  194.             System.out.println(p.getName());  
  195.         /*输出: 
  196.           test1 
  197.           test2 
  198.         */  
  199.         }  
  200.           
  201.     }  
  202.       
  203.       
  204.       
  205. }  
[java]  view plain  copy
 print ?
  1. 1、DTO:Data Transfer Object,数据传送对象  
  2.   
  3. 2、对于日期格式的问题,也已经处理  
  4.   
  5. 3、json-lib-2.2.2-jdk13.jar (2.1在日期数组 json->java有问题)  
  6.   
  7. 工具类JsonUtil代码如下:  
  8.   
  9. Java代码   
  10. public class JsonUtil {     
  11.     
  12.     /**页面传至后台时,json数据在request的参数名称*/    
  13.     public final static String JSON_ATTRIBUTE = "json";     
  14.     public final static String JSON_ATTRIBUTE1 = "json1";     
  15.     public final static String JSON_ATTRIBUTE2 = "json2";     
  16.     public final static String JSON_ATTRIBUTE3 = "json3";     
  17.     public final static String JSON_ATTRIBUTE4 = "json4";     
  18.          
  19.     /**   
  20.      * 从一个JSON 对象字符格式中得到一个java对象,形如:   
  21.      * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}}   
  22.      * @param object   
  23.      * @param clazz   
  24.      * @return   
  25.      */    
  26.     public static Object getDTO(String jsonString, Class clazz){     
  27.         JSONObject jsonObject = null;     
  28.         try{     
  29.             setDataFormat2JAVA();      
  30.             jsonObject = JSONObject.fromObject(jsonString);     
  31.         }catch(Exception e){     
  32.             e.printStackTrace();     
  33.         }     
  34.         return JSONObject.toBean(jsonObject, clazz);     
  35.     }     
  36.          
  37.     /**   
  38.      * 从一个JSON 对象字符格式中得到一个java对象,其中beansList是一类的集合,形如:   
  39.      * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...},   
  40.      * beansList:[{}, {}, ...]}   
  41.      * @param jsonString   
  42.      * @param clazz   
  43.      * @param map 集合属性的类型 (key : 集合属性名, value : 集合属性类型class) eg: ("beansList" : Bean.class)   
  44.      * @return   
  45.      */    
  46.     public static Object getDTO(String jsonString, Class clazz, Map map){     
  47.         JSONObject jsonObject = null;     
  48.         try{     
  49.             setDataFormat2JAVA();      
  50.             jsonObject = JSONObject.fromObject(jsonString);     
  51.         }catch(Exception e){     
  52.             e.printStackTrace();     
  53.         }     
  54.         return JSONObject.toBean(jsonObject, clazz, map);     
  55.     }     
  56.          
  57.     /**   
  58.      * 从一个JSON数组得到一个java对象数组,形如:   
  59.      * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]   
  60.      * @param object   
  61.      * @param clazz   
  62.      * @return   
  63.      */    
  64.     public static Object[] getDTOArray(String jsonString, Class clazz){     
  65.         setDataFormat2JAVA();     
  66.         JSONArray array = JSONArray.fromObject(jsonString);     
  67.         Object[] obj = new Object[array.size()];     
  68.         for(int i = 0; i < array.size(); i++){     
  69.             JSONObject jsonObject = array.getJSONObject(i);     
  70.             obj[i] = JSONObject.toBean(jsonObject, clazz);     
  71.         }     
  72.         return obj;     
  73.     }     
  74.          
  75.     /**   
  76.      * 从一个JSON数组得到一个java对象数组,形如:   
  77.      * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]   
  78.      * @param object   
  79.      * @param clazz   
  80.      * @param map   
  81.      * @return   
  82.      */    
  83.     public static Object[] getDTOArray(String jsonString, Class clazz, Map map){     
  84.         setDataFormat2JAVA();     
  85.         JSONArray array = JSONArray.fromObject(jsonString);     
  86.         Object[] obj = new Object[array.size()];     
  87.         for(int i = 0; i < array.size(); i++){     
  88.             JSONObject jsonObject = array.getJSONObject(i);     
  89.             obj[i] = JSONObject.toBean(jsonObject, clazz, map);     
  90.         }     
  91.         return obj;     
  92.     }     
  93.          
  94.     /**   
  95.      * 从一个JSON数组得到一个java对象集合   
  96.      * @param object   
  97.      * @param clazz   
  98.      * @return   
  99.      */    
  100.     public static List getDTOList(String jsonString, Class clazz){     
  101.         setDataFormat2JAVA();     
  102.         JSONArray array = JSONArray.fromObject(jsonString);     
  103.         List list = new ArrayList();     
  104.         for(Iterator iter = array.iterator(); iter.hasNext();){     
  105.             JSONObject jsonObject = (JSONObject)iter.next();     
  106.             list.add(JSONObject.toBean(jsonObject, clazz));     
  107.         }     
  108.         return list;     
  109.     }     
  110.          
  111.     /**   
  112.      * 从一个JSON数组得到一个java对象集合,其中对象中包含有集合属性   
  113.      * @param object   
  114.      * @param clazz   
  115.      * @param map 集合属性的类型   
  116.      * @return   
  117.      */    
  118.     public static List getDTOList(String jsonString, Class clazz, Map map){     
  119.         setDataFormat2JAVA();     
  120.         JSONArray array = JSONArray.fromObject(jsonString);     
  121.         List list = new ArrayList();     
  122.         for(Iterator iter = array.iterator(); iter.hasNext();){     
  123.             JSONObject jsonObject = (JSONObject)iter.next();     
  124.             list.add(JSONObject.toBean(jsonObject, clazz, map));     
  125.         }     
  126.         return list;     
  127.     }     
  128.          
  129.     /**   
  130.      * 从json HASH表达式中获取一个map,该map支持嵌套功能   
  131.      * 形如:{"id" : "johncon", "name" : "小强"}   
  132.      * 注意commons-collections版本,必须包含org.apache.commons.collections.map.MultiKeyMap   
  133.      * @param object   
  134.      * @return   
  135.      */    
  136.     public static Map getMapFromJson(String jsonString) {     
  137.         setDataFormat2JAVA();     
  138.         JSONObject jsonObject = JSONObject.fromObject(jsonString);     
  139.         Map map = new HashMap();     
  140.         for(Iterator iter = jsonObject.keys(); iter.hasNext();){     
  141.             String key = (String)iter.next();     
  142.             map.put(key, jsonObject.get(key));     
  143.         }     
  144.         return map;     
  145.     }     
  146.          
  147.     /**   
  148.      * 从json数组中得到相应java数组   
  149.      * json形如:["123", "456"]   
  150.      * @param jsonString   
  151.      * @return   
  152.      */    
  153.     public static Object[] getObjectArrayFromJson(String jsonString) {     
  154.         JSONArray jsonArray = JSONArray.fromObject(jsonString);     
  155.         return jsonArray.toArray();     
  156.     }     
  157.     
  158.     
  159.     /**   
  160.      * 把数据对象转换成json字符串   
  161.      * DTO对象形如:{"id" : idValue, "name" : nameValue, ...}   
  162.      * 数组对象形如:[{}, {}, {}, ...]   
  163.      * map对象形如:{key1 : {"id" : idValue, "name" : nameValue, ...}, key2 : {}, ...}   
  164.      * @param object   
  165.      * @return   
  166.      */    
  167.     public static String getJSONString(Object object) throws Exception{     
  168.         String jsonString = null;     
  169.         //日期值处理器     
  170.         JsonConfig jsonConfig = new JsonConfig();     
  171.         jsonConfig.registerJsonValueProcessor(java.util.Date.classnew JsonDateValueProcessor());     
  172.         if(object != null){     
  173.             if(object instanceof Collection || object instanceof Object[]){     
  174.                 jsonString = JSONArray.fromObject(object, jsonConfig).toString();     
  175.             }else{     
  176.                 jsonString = JSONObject.fromObject(object, jsonConfig).toString();     
  177.             }     
  178.         }     
  179.         return jsonString == null ? "{}" : jsonString;     
  180.     }     
  181.          
  182.     private static void setDataFormat2JAVA(){     
  183.         //设定日期转换格式     
  184.         JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"yyyy-MM-dd""yyyy-MM-dd HH:mm:ss"}));     
  185.     }     
  186.          
  187.     public static void main(String[] arg) throws Exception{     
  188.         String s = "{status : 'success'}";     
  189.         System.out.println(" object : " + JsonUtil.getJSONString(s));     
  190.     }     
  191. }    
  192.   
  193. public class JsonUtil {  
  194.   
  195.  /**页面传至后台时,json数据在request的参数名称*/  
  196.  public final static String JSON_ATTRIBUTE = "json";  
  197.  public final static String JSON_ATTRIBUTE1 = "json1";  
  198.  public final static String JSON_ATTRIBUTE2 = "json2";  
  199.  public final static String JSON_ATTRIBUTE3 = "json3";  
  200.  public final static String JSON_ATTRIBUTE4 = "json4";  
  201.    
  202.  /** 
  203.   * 从一个JSON 对象字符格式中得到一个java对象,形如: 
  204.   * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}} 
  205.   * @param object 
  206.   * @param clazz 
  207.   * @return 
  208.   */  
  209.  public static Object getDTO(String jsonString, Class clazz){  
  210.   JSONObject jsonObject = null;  
  211.   try{  
  212.    setDataFormat2JAVA();   
  213.    jsonObject = JSONObject.fromObject(jsonString);  
  214.   }catch(Exception e){  
  215.    e.printStackTrace();  
  216.   }  
  217.   return JSONObject.toBean(jsonObject, clazz);  
  218.  }  
  219.    
  220.  /** 
  221.   * 从一个JSON 对象字符格式中得到一个java对象,其中beansList是一类的集合,形如: 
  222.   * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}, 
  223.   * beansList:[{}, {}, ...]} 
  224.   * @param jsonString 
  225.   * @param clazz 
  226.   * @param map 集合属性的类型 (key : 集合属性名, value : 集合属性类型class) eg: ("beansList" : Bean.class) 
  227.   * @return 
  228.   */  
  229.  public static Object getDTO(String jsonString, Class clazz, Map map){  
  230.   JSONObject jsonObject = null;  
  231.   try{  
  232.    setDataFormat2JAVA();   
  233.    jsonObject = JSONObject.fromObject(jsonString);  
  234.   }catch(Exception e){  
  235.    e.printStackTrace();  
  236.   }  
  237.   return JSONObject.toBean(jsonObject, clazz, map);  
  238.  }  
  239.    
  240.  /** 
  241.   * 从一个JSON数组得到一个java对象数组,形如: 
  242.   * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...] 
  243.   * @param object 
  244.   * @param clazz 
  245.   * @return 
  246.   */  
  247.  public static Object[] getDTOArray(String jsonString, Class clazz){  
  248.   setDataFormat2JAVA();  
  249.   JSONArray array = JSONArray.fromObject(jsonString);  
  250.   Object[] obj = new Object[array.size()];  
  251.   for(int i = 0; i < array.size(); i++){  
  252.    JSONObject jsonObject = array.getJSONObject(i);  
  253.    obj[i] = JSONObject.toBean(jsonObject, clazz);  
  254.   }  
  255.   return obj;  
  256.  }  
  257.    
  258.  /** 
  259.   * 从一个JSON数组得到一个java对象数组,形如: 
  260.   * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...] 
  261.   * @param object 
  262.   * @param clazz 
  263.   * @param map 
  264.   * @return 
  265.   */  
  266.  public static Object[] getDTOArray(String jsonString, Class clazz, Map map){  
  267.   setDataFormat2JAVA();  
  268.   JSONArray array = JSONArray.fromObject(jsonString);  
  269.   Object[] obj = new Object[array.size()];  
  270.   for(int i = 0; i < array.size(); i++){  
  271.    JSONObject jsonObject = array.getJSONObject(i);  
  272.    obj[i] = JSONObject.toBean(jsonObject, clazz, map);  
  273.   }  
  274.   return obj;  
  275.  }  
  276.    
  277.  /** 
  278.   * 从一个JSON数组得到一个java对象集合 
  279.   * @param object 
  280.   * @param clazz 
  281.   * @return 
  282.   */  
  283.  public static List getDTOList(String jsonString, Class clazz){  
  284.   setDataFormat2JAVA();  
  285.   JSONArray array = JSONArray.fromObject(jsonString);  
  286.   List list = new ArrayList();  
  287.   for(Iterator iter = array.iterator(); iter.hasNext();){  
  288.    JSONObject jsonObject = (JSONObject)iter.next();  
  289.    list.add(JSONObject.toBean(jsonObject, clazz));  
  290.   }  
  291.   return list;  
  292.  }  
  293.    
  294.  /** 
  295.   * 从一个JSON数组得到一个java对象集合,其中对象中包含有集合属性 
  296.   * @param object 
  297.   * @param clazz 
  298.   * @param map 集合属性的类型 
  299.   * @return 
  300.   */  
  301.  public static List getDTOList(String jsonString, Class clazz, Map map){  
  302.   setDataFormat2JAVA();  
  303.   JSONArray array = JSONArray.fromObject(jsonString);  
  304.   List list = new ArrayList();  
  305.   for(Iterator iter = array.iterator(); iter.hasNext();){  
  306.    JSONObject jsonObject = (JSONObject)iter.next();  
  307.    list.add(JSONObject.toBean(jsonObject, clazz, map));  
  308.   }  
  309.   return list;  
  310.  }  
  311.    
  312.  /** 
  313.   * 从json HASH表达式中获取一个map,该map支持嵌套功能 
  314.   * 形如:{"id" : "johncon", "name" : "小强"} 
  315.   * 注意commons-collections版本,必须包含org.apache.commons.collections.map.MultiKeyMap 
  316.   * @param object 
  317.   * @return 
  318.   */  
  319.  public static Map getMapFromJson(String jsonString) {  
  320.   setDataFormat2JAVA();  
  321.         JSONObject jsonObject = JSONObject.fromObject(jsonString);  
  322.         Map map = new HashMap();  
  323.         for(Iterator iter = jsonObject.keys(); iter.hasNext();){  
  324.             String key = (String)iter.next();  
  325.             map.put(key, jsonObject.get(key));  
  326.         }  
  327.         return map;  
  328.     }  
  329.    
  330.  /** 
  331.      * 从json数组中得到相应java数组 
  332.      * json形如:["123", "456"] 
  333.      * @param jsonString 
  334.      * @return 
  335.      */  
  336.     public static Object[] getObjectArrayFromJson(String jsonString) {  
  337.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  338.         return jsonArray.toArray();  
  339.     }  
  340.   
  341.   
  342.  /** 
  343.   * 把数据对象转换成json字符串 
  344.   * DTO对象形如:{"id" : idValue, "name" : nameValue, ...} 
  345.   * 数组对象形如:[{}, {}, {}, ...] 
  346.   * map对象形如:{key1 : {"id" : idValue, "name" : nameValue, ...}, key2 : {}, ...} 
  347.   * @param object 
  348.   * @return 
  349.   */  
  350.  public static String getJSONString(Object object) throws Exception{  
  351.   String jsonString = null;  
  352.   //日期值处理器  
  353.   JsonConfig jsonConfig = new JsonConfig();  
  354.   jsonConfig.registerJsonValueProcessor(java.util.Date.classnew JsonDateValueProcessor());  
  355.   if(object != null){  
  356.    if(object instanceof Collection || object instanceof Object[]){  
  357.     jsonString = JSONArray.fromObject(object, jsonConfig).toString();  
  358.    }else{  
  359.     jsonString = JSONObject.fromObject(object, jsonConfig).toString();  
  360.    }  
  361.   }  
  362.   return jsonString == null ? "{}" : jsonString;  
  363.  }  
  364.    
  365.  private static void setDataFormat2JAVA(){  
  366.   //设定日期转换格式  
  367.   JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"yyyy-MM-dd""yyyy-MM-dd HH:mm:ss"}));  
  368.  }  
  369.    
  370.  public static void main(String[] arg) throws Exception{  
  371.   String s = "{status : 'success'}";  
  372.   System.out.println(" object : " + JsonUtil.getJSONString(s));  
  373.  }  
  374. }   
  375.   
  376. 对于java对象转换成json数据格式时,要对日期格式化常用格式,类:JsonDateValueProcessor  
  377.   
  378. Java代码   
  379. import java.text.SimpleDateFormat;     
  380. import java.util.Date;     
  381.     
  382. import net.sf.json.JsonConfig;     
  383. import net.sf.json.processors.JsonValueProcessor;     
  384.     
  385. /*   
  386.  * @author johncon   
  387.  * 创建日期 2008-9-10   
  388.  * json日期值处理器   
  389.  */    
  390. public class JsonDateValueProcessor implements JsonValueProcessor {     
  391.     
  392.     private String format = "yyyy-MM-dd HH:mm:ss";     
  393.     
  394.     public JsonDateValueProcessor() {     
  395.     
  396.     }     
  397.     
  398.     public JsonDateValueProcessor(String format) {     
  399.         this.format = format;     
  400.     }     
  401.     
  402.     public Object processArrayValue(Object value, JsonConfig jsonConfig) {     
  403.         return process(value, jsonConfig);     
  404.     }     
  405.     
  406.     public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {     
  407.         return process(value, jsonConfig);     
  408.     }     
  409.          
  410.     private Object process( Object value, JsonConfig jsonConfig ) {     
  411.         if (value instanceof Date) {     
  412.             String str = new SimpleDateFormat(format).format((Date) value);     
  413.             return str;     
  414.         }     
  415.         return value == null ? null : value.toString();     
  416.     }     
  417.     
  418.     public String getFormat() {     
  419.         return format;     
  420.     }     
  421.     
  422.     public void setFormat(String format) {     
  423.         this.format = format;     
  424.     }     
  425.     
  426. }    
  427.   
  428. import java.text.SimpleDateFormat;  
  429. import java.util.Date;  
  430.   
  431. import net.sf.json.JsonConfig;  
  432. import net.sf.json.processors.JsonValueProcessor;  
  433.   
  434. /* 
  435.  * @author johncon 
  436.  * 创建日期 2008-9-10 
  437.  * json日期值处理器 
  438.  */  
  439. public class JsonDateValueProcessor implements JsonValueProcessor {  
  440.   
  441.  private String format = "yyyy-MM-dd HH:mm:ss";  
  442.   
  443.  public JsonDateValueProcessor() {  
  444.   
  445.  }  
  446.   
  447.  public JsonDateValueProcessor(String format) {  
  448.   this.format = format;  
  449.  }  
  450.   
  451.  public Object processArrayValue(Object value, JsonConfig jsonConfig) {  
  452.   return process(value, jsonConfig);  
  453.  }  
  454.   
  455.  public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {  
  456.   return process(value, jsonConfig);  
  457.  }  
  458.    
  459.  private Object process( Object value, JsonConfig jsonConfig ) {  
  460.   if (value instanceof Date) {  
  461.    String str = new SimpleDateFormat(format).format((Date) value);  
  462.    return str;  
  463.   }  
  464.   return value == null ? null : value.toString();  
  465.  }  
  466.   
  467.  public String getFormat() {  
  468.   return format;  
  469.  }  
  470.   
  471.  public void setFormat(String format) {  
  472.   this.format = format;  
  473.  }  
  474.   
  475. }   
  476.   
  477. 对于对象中有明确类型的对象属性,可不管;但对象中有集合属性的,由于类型不明确,所以要先明确类型:  
  478.   
  479. Java代码   
  480. String jsonString = request.getParameter("json");     
  481. //增加对象中的集合属性的类型以及对象元素中的对象属性的集合属性的类型     
  482. Map clazzMap = new HashMap();     
  483. //secondItems是FirstDTO里的集合属性     
  484. clazzMap.put("secondItems", SecondDTO.class);     
  485. //thirdItems是SecondDTO里的集合属性     
  486. clazzMap.put("thirdItems", ThirdDTO.class);     
  487. FirstDTO firstDTO = (FirstDTO)JsonUtil.getDTO(jsonString, FirstDTO.class, clazzMap);   

 

Struts2的XML配置说明

[html]  view plain  copy
 print ?
  1. <result type="json">  
  2.     <!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->  
  3.     <!-- 默认将会序列所有有返回值的getter方法的值,而无论该方法是否有对应属性 -->  
  4.     <param name="root">dataMap</param>  
  5.     <!-- 指定是否序列化空的属性 -->  
  6.     <param name="excludeNullProperties">true</param>  
  7.     <!-- 这里指定将序列化dataMap中的那些属性 -->  
  8.     <param name="includeProperties">userList.*</param>  
  9.     <!-- 这里指定将要从dataMap中排除那些属性,这些排除的属性将不被序列化,一般不与上边的参数配置同时出现 -->  
  10.     <param name="excludeProperties">SUCCESS</param>  
  11. </result>  

 

 

<!-- 封装所以的get开头的方法 --> 
<result type="json" name="user"> 
</result> 

<!-- 只包含user.id属性 --> 
<result type="json" name="user"> 
    <param name="includeProperties">               
        user\.id,

        list

\d+
\.Id,   list
\d+
\.userName                   //正则表达式(以逗号隔开)
    </param> 
</result> 

<!-- 不包含user属性 --> 
<result type="json" name="list"> 
    <param name=" excludeProperties">               
        user 
    </param> 
</result> 

<!-- 根对象只包含user --> 
<result type="json">  
    <param name="root">  
        user 
    </param>  
</result>

<!-- includeProperties 直接返回对象的json数据,前台不需要eval转换,<param name="root">result</param>则不同,需要前台进行eval转换 -->

<!-- "root"对象中父类的field(属性)不会(会?) 默认存放到 JSON数据中,如果不想这样做,需要在配置时指定 ignoreHierarchy 为 false:  --> 
<result type="json">  
    <pa



我们只要输出person对象的name属性值,配置如下

1 < result  type ="json" >
2 < param  name ="root" >person.name </ param >
3 </ result >
[xml]  view plain  copy
 print ?
  1. <result type="json">  
  2. <param name="root">person.name</param>  
  3. </result>  

 

  5.2. excludeNullProperties 参数:表示是否去掉空值, 默认值是false,如果设置为true会自动将为空的值过滤,只输出不为空的值。

1 < result  type ="json" >   
2      < param  name ="excludeNullProperties" >true </ param >   
3 </ result >   
4
[xml]  view plain  copy
 print ?
  1. <result type="json">  
  2. <param name="excludeNullProperties">true</param>  
  3. </result>  

 

  5.3. ignoreHierarchy 参数:表示是否忽略等级,也就是继承关系,比如:TestAction继承于BaseAction,那么TestAction中返回的json字符串默认是不会包含父类BaseAction的属性值,ignoreHierarchy值默认为true,设置为false后会将父类和子类的属性一起返回。

1 < result  type ="json" >   
2      < param  name ="ignoreHierarchy" >false </ param >   
3 </ result >   
[xml]  view plain  copy
 print ?
  1. <result type="json">  
  2. <param name="ignoreHierarchy">false</param>  
  3. </result>  

 

  5.4. includeProperties 参数:输出结果中需要包含的属性值,这里正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。

   如:输出person的所有属性 

1 < result  type ="json" >   
2      < param  name ="includeProperties" >person.*, person\.name </ param >   
3 </ result >   

 

<!-- 返回的是一个user对象 user对象(id,name,pass) -->
14 <result name="findByDarkName" type="json">
15 <!-- param参数的配置,includeProperties -->
16 <param name="includeProperties">
17 list\[\d+\]\.id, list\[\d+\]\.name, list\[\d+\]\.pass
18 </param>
19 </result>


Struts2+jQuery+Json及JQuery相关插件的例子

 

注意事项:

  1.开发时,应将工程及相应的页面数据库编码均设为:utf8解决乱码问题;

  2.当前开发版本为struts2.1.8,不同的struts2版本会有不同的jar包需要引入,具体见readme.txt

  3.autocomplete插件不是很完善,尚不能处理json数据;弹出层框架只针对图片(可修改格式适应其它形式)

readme.txt:

             

view plain copy to clipboard print ?
  1. 1.JQuery的Ajax实现并与struts2的结合   
  2. 2.配置过程:   
  3.   a.新建web项目;   
  4.   b.修改web.xml文件   
  5.   c.在src下添加struts.xml文件,添加jar包支持:freemarker.jar ognl.jar struts2-core.jar commons-fileupload.jar    
  6.       commons-io.jar xwork-core-2.1.6.jar(这个包加上版本号,是因为下文要提到它),注意jar包支持   
  7.       这六个包是struts必须依赖的jar包   
  8.   d.配置jsp文件,在jsp里面添加jquery支持   
  9.   e.配置action   
  10.   f   ( 一)在struts2.1.6之前的版本:   
  11.         添加相应的json包:json-lib.jar jsonplugin.jar 这里要注意很重要的一点,因为json大量引用了Apache commons的包,所以这里要一并加入,   
  12.        需要的commons包共4个,除了commons的包外,还需要引入一个 ezmorph的包,所以这一步一共要引入7个包,列出如下:   
  13.        commons-collections.jar commons-lang.jar   
  14.        commons-beanutils.jar commons-logging.jar ezmorph.jar 再加上json的两个包共七个   
  15.        (二)struts2.1.6,添加jsonplugin0.34或者jsonplugin0.7   
  16.        (三)struts2.1.8则添加json-lib-2.2.3.jar,struts2-json-plugin,struts2-junit-plugin   
  17.           
  18.           
  19. 3.插件使用:    
  20.     1.validation插件:详见table-validation.jsp,主要为引入一个jquery.validate.js,获取相应的属性名来进行验证;   
  21.     2.tablesort插件:目前用的是兼容中文的官网版本,一是可以实现自动排序,二是支持中文;要注意在table当中的格式,这点很重要   
  22.     3.tablesortpager插件   
  23.        
  24.        
  25.        
  26.  JQuery与Json结合的一些注意事项:   
  27.  1.$.get(url,data,function(data){   
  28.     eval(data);   
  29.     })   
  30.   eval(data)将数据转换为js对象;   
  31.   实际上如果返回的json对象,可通过将参数直接命名为json即可,如下   
  32.   $.get(url.data,function(data){},"json")   
  33.   
  34. 2.取json属性时,尽量用中括号方式,原因是如果有数字属性会发生不识别的现象   
  35.   eg:var a=obj["31001"];   
  36.      //obj.31001则可能出错   
  37.    解决办法有其它方式:比如将属性值31001改为s31001   
  38.       
  39.  3.乱码问题:   
  40.     在struts1.2中,通过设置表头的编码来解决乱码问题,注意对于xml和json,要分别设置为text/xml和text/json   
  41.         eg:response.setContentType("text/json; charset=utf-8");   
[xhtml]  view plain  copy
 print ?
  1. 1.JQuery的Ajax实现并与struts2的结合  
  2. 2.配置过程:  
  3. a.新建web项目;  
  4. b.修改web.xml文件  
  5. c.在src下添加struts.xml文件,添加jar包支持:freemarker.jar ognl.jar struts2-core.jar commons-fileupload.jar  
  6. commons-io.jar xwork-core-2.1.6.jar(这个包加上版本号,是因为下文要提到它),注意jar包支持  
  7. 这六个包是struts必须依赖的jar包  
  8. d.配置jsp文件,在jsp里面添加jquery支持  
  9. e.配置action  
  10. f   ( 一)在struts2.1.6之前的版本:  
  11. 添加相应的json包:json-lib.jar jsonplugin.jar 这里要注意很重要的一点,因为json大量引用了Apache commons的包,所以这里要一并加入,  
  12. 需要的commons包共4个,除了commons的包外,还需要引入一个 ezmorph的包,所以这一步一共要引入7个包,列出如下:  
  13. commons-collections.jar commons-lang.jar  
  14. commons-beanutils.jar commons-logging.jar ezmorph.jar 再加上json的两个包共七个  
  15. (二)struts2.1.6,添加jsonplugin0.34或者jsonplugin0.7  
  16. (三)struts2.1.8则添加json-lib-2.2.3.jar,struts2-json-plugin,struts2-junit-plugin  
  17. 3.插件使用:  
  18. 1.validation插件:详见table-validation.jsp,主要为引入一个jquery.validate.js,获取相应的属性名来进行验证;  
  19. 2.tablesort插件:目前用的是兼容中文的官网版本,一是可以实现自动排序,二是支持中文;要注意在table当中的格式,这点很重要  
  20. 3.tablesortpager插件  
  21. JQuery与Json结合的一些注意事项:  
  22. 1.$.get(url,data,function(data){  
  23. eval(data);  
  24. })  
  25. eval(data)将数据转换为js对象;  
  26. 实际上如果返回的json对象,可通过将参数直接命名为json即可,如下  
  27. $.get(url.data,function(data){},"json")  
  28. 2.取json属性时,尽量用中括号方式,原因是如果有数字属性会发生不识别的现象  
  29. eg:var a=obj["31001"];  
  30. //obj.31001则可能出错  
  31. 解决办法有其它方式:比如将属性值31001改为s31001  
  32. 3.乱码问题:  
  33. 在struts1.2中,通过设置表头的编码来解决乱码问题,注意对于xml和json,要分别设置为text/xml和text/json  
  34. eg:response.setContentType("text/json; charset=utf-8");   

 

1.struts.xml配置:

             

view plain copy to clipboard print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!-- 指定Struts 2配置文件的DTD信息 -->  
  3. <!DOCTYPE struts PUBLIC   
  4.         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   
  5.         "http://struts.apache.org/dtds/struts-2.0.dtd">  
  6. <struts>  
  7.      <constant name="struts.i18n.encoding" value="utf-8"></constant>  
  8.     <package name="S2SHJQuery" extends="json-default">  
  9.         <action name="show" class="action.ShowAction">  
  10.             <result type="json"/>  
  11.         </action>  
  12.     </package>  
  13. </struts>  
[xhtml]  view plain  copy
 print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!-- 指定Struts 2配置文件的DTD信息 -->  
  3. <!DOCTYPE struts PUBLIC  
  4. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  5. "http://struts.apache.org/dtds/struts-2.0.dtd">  
  6. <struts>  
  7. <constant name="struts.i18n.encoding" value="utf-8"></constant>  
  8. <package name="S2SHJQuery" extends="json-default">  
  9. <action name="show" class="action.ShowAction">  
  10. <result type="json"/>  
  11. </action>  
  12. </package>  
  13. </struts>  

 

2.ShowAction.Java配置 :

             

view plain copy to clipboard print ?
  1. package action;   
  2.   
  3. import java.util.ArrayList;   
  4. import java.util.List;   
  5. import java.util.Map;   
  6.   
  7. import org.apache.struts2.json.annotations.JSON;   
  8.   
  9. import com.opensymphony.xwork2.ActionSupport;   
  10. public class ShowAction extends ActionSupport {   
  11.     private String testvalue;   
  12.     private String result;   
  13.     private List<String> list;   
  14.     private List<User> userlist;   
  15.     private User user;   
  16.     private Map<String, User> map;   
  17.     private String[] autoarray;   
  18.     public String[] getAutoarray() {   
  19.         return autoarray;   
  20.     }   
  21.     public void setAutoarray(String[] autoarray) {   
  22.         this.autoarray = autoarray;   
  23.     }   
  24.     @JSON(serialize=false)   
  25.     public Map<String, User> getMap() {   
  26.         return map;   
  27.     }   
  28.     public void setMap(Map<String, User> map) {   
  29.         this.map = map;   
  30.     }   
  31.     @JSON(serialize=false)   
  32.     public User getUser() {   
  33.         return user;   
  34.     }   
  35.     public void setUser(User user) {   
  36.         this.user = user;   
  37.     }   
  38.     @JSON(serialize=false)   
  39.     public List<User> getUserlist() {   
  40.         return userlist;   
  41.     }   
  42.     public void setUserlist(List<User> userlist) {   
  43.         this.userlist = userlist;   
  44.     }   
  45.     @JSON(serialize=false)   
  46.     public List<String> getList() {   
  47.         return list;   
  48.     }   
  49.     public void setList(List<String> list) {   
  50.         this.list = list;   
  51.     }   
  52.        
  53.     public void setTestvalue(String testvalue) {   
  54.         this.testvalue = testvalue;   
  55.     }   
  56.     @JSON(serialize=false)   
  57.     public String getTestvalue() {   
  58.         return testvalue;   
  59.     }   
  60.     @JSON(serialize=false)   
  61.     public String getResult() {   
  62.         return result;   
  63.     }   
  64.     public void setResult(String result) {   
  65.         this.result = result;   
  66.     }   
  67.     @Override  
  68.     public String execute() throws Exception {   
  69.         // TODO Auto-generated method stub   
  70.         System.out.println("test is ok: "+testvalue);   
  71.         //1.????string   
  72.         /*int i=9;  
  73.          //result=""+i+"";  
  74.          result="中国";*/  
  75.         //2.list?   
  76.         /*list=new ArrayList<String>();  
  77.         list.add("allen");  
  78.         list.add("中国");  
  79.         list.add("adc");*/  
  80.         //3.list?а?User   
  81.         /*userlist=new ArrayList<User>();  
  82.         User user1=new User();  
  83.         user1.setPassword(1);  
  84.         user1.setUsername("username1");  
  85.         User user2=new User();  
  86.         user2.setPassword(2);  
  87.         user2.setUsername("username2");  
  88.         User user3=new User();  
  89.         user3.setPassword(3);  
  90.         user3.setUsername("username3");  
  91.         userlist.add(user1);  
  92.         userlist.add(user2);  
  93.         userlist.add(user3);*/  
  94.         //4.User???????   
  95.         /*user=new User();  
  96.         user.setPassword(1);  
  97.         String username="中国";  
  98.         user.setUsername(username);  
  99.         System.out.println(user.getUsername());  
  100.          */  
  101.         //5.map????   
  102.         /*map=new HashMap<String, User>();  
  103.         User user1=new User();  
  104.         user1.setPassword(1);  
  105.         user1.setUsername("username1");  
  106.         User user2=new User();  
  107.         user2.setPassword(2);  
  108.         user2.setUsername("username2");  
  109.         User user3=new User();  
  110.         user3.setPassword(3);  
  111.         user3.setUsername("username3");  
  112.         map.put("s1",user1 );  
  113.         map.put("s2",user2 );  
  114.         map.put("s3",user3 );*/  
  115.         /*map=new HashMap<String, String>();//??????String,string???  
  116.         map.put("s1","user1");  
  117.         map.put("s2","user2");  
  118.         map.put("s3","user3");*/  
  119.         //7.直接传递数祖   
  120.         autoarray=new String[3];   
  121.         autoarray[0]="a";   
  122.         autoarray[1]="b";   
  123.         autoarray[2]="c";   
  124.            
  125.         return SUCCESS;   
  126.     }   
  127.   
  128.        
  129. }  
[java]  view plain  copy
 print ?
  1. package action;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4. import java.util.Map;  
  5. import org.apache.struts2.json.annotations.JSON;  
  6. import com.opensymphony.xwork2.ActionSupport;  
  7. public class ShowAction extends ActionSupport {  
  8. private String testvalue;  
  9. private String result;  
  10. private List<String> list;  
  11. private List<User> userlist;  
  12. private User user;  
  13. private Map<String, User> map;  
  14. private String[] autoarray;  
  15. public String[] getAutoarray() {  
  16. return autoarray;  
  17. }  
  18. public void setAutoarray(String[] autoarray) {  
  19. this.autoarray = autoarray;  
  20. }  
  21. @JSON(serialize=false)  
  22. public Map<String, User> getMap() {  
  23. return map;  
  24. }  
  25. public void setMap(Map<String, User> map) {  
  26. this.map = map;  
  27. }  
  28. @JSON(serialize=false)  
  29. public User getUser() {  
  30. return user;  
  31. }  
  32. public void setUser(User user) {  
  33. this.user = user;  
  34. }  
  35. @JSON(serialize=false)  
  36. public List<User> getUserlist() {  
  37. return userlist;  
  38. }  
  39. public void setUserlist(List<User> userlist) {  
  40. this.userlist = userlist;  
  41. }  
  42. @JSON(serialize=false)  
  43. public List<String> getList() {  
  44. return list;  
  45. }  
  46. public void setList(List<String> list) {  
  47. this.list = list;  
  48. }  
  49. public void setTestvalue(String testvalue) {  
  50. this.testvalue = testvalue;  
  51. }  
  52. @JSON(serialize=false)  
  53. public String getTestvalue() {  
  54. return testvalue;  
  55. }  
  56. @JSON(serialize=false)  
  57. public String getResult() {  
  58. return result;  
  59. }  
  60. public void setResult(String result) {  
  61. this.result = result;  
  62. }  
  63. @Override  
  64. public String execute() throws Exception {  
  65. // TODO Auto-generated method stub  
  66. System.out.println("test is ok: "+testvalue);  
  67. //1.????string  
  68. /*int i=9; 
  69. //result=""+i+""; 
  70. result="中国";*/  
  71. //2.list?  
  72. /*list=new ArrayList<String>(); 
  73. list.add("allen"); 
  74. list.add("中国"); 
  75. list.add("adc");*/  
  76. //3.list?а?User  
  77. /*userlist=new ArrayList<User>(); 
  78. User user1=new User(); 
  79. user1.setPassword(1); 
  80. user1.setUsername("username1"); 
  81. User user2=new User(); 
  82. user2.setPassword(2); 
  83. user2.setUsername("username2"); 
  84. User user3=new User(); 
  85. user3.setPassword(3); 
  86. user3.setUsername("username3"); 
  87. userlist.add(user1); 
  88. userlist.add(user2); 
  89. userlist.add(user3);*/  
  90. //4.User???????  
  91. /*user=new User(); 
  92. user.setPassword(1); 
  93. String username="中国"; 
  94. user.setUsername(username); 
  95. System.out.println(user.getUsername()); 
  96. */  
  97. //5.map????  
  98. /*map=new HashMap<String, User>(); 
  99. User user1=new User(); 
  100. user1.setPassword(1); 
  101. user1.setUsername("username1"); 
  102. User user2=new User(); 
  103. user2.setPassword(2); 
  104. user2.setUsername("username2"); 
  105. User user3=new User(); 
  106. user3.setPassword(3); 
  107. user3.setUsername("username3"); 
  108. map.put("s1",user1 ); 
  109. map.put("s2",user2 ); 
  110. map.put("s3",user3 );*/  
  111. /*map=new HashMap<String, String>();//??????String,string??? 
  112. map.put("s1","user1"); 
  113. map.put("s2","user2"); 
  114. map.put("s3","user3");*/  
  115. //7.直接传递数祖  
  116. autoarray=new String[3];  
  117. autoarray[0]="a";  
  118. autoarray[1]="b";  
  119. autoarray[2]="c";  
  120. return SUCCESS;  
  121. }  
  122. }  

 

3.show.jsp配置:

                    

view plain copy to clipboard print ?
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   
  2. <%   
  3. String path = request.getContextPath();   
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";   
  5. %>   
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
  8. <html>   
  9.   <head>   
  10.   <mce:script type="text/javascript" src="/S2SHJQuery/js/jquery.js" mce_src="S2SHJQuery/js/jquery.js"></mce:script>   
  11.     <base href="<%=basePath%>">   
  12.     <title>struts2+jquery+json</title>   
  13. <mce:script type="text/javascript"><!--   
  14.     //1.struts2+jquery+json单独传递单个参数   
  15.     /*$(function(){  
  16.             $("#jquerytest").click(function(){  
  17.             var params={testvalue:$('#test').val()};  
  18.                 $.ajax({  
  19.                         url:"show.action",  
  20.                         data:params,  
  21.                         type:'post',  
  22.                         dataType:'json',  
  23.                         success:function(data){  
  24.                         //data += decodeURI(data.shtml) ;  
  25.                             alert("成功");  
  26.                             alert(data.result);  
  27.                             },  
  28.                         error:  function(){  
  29.                                 alert("失败");  
  30.                             }                     
  31.                 })  
  32.             })  
  33.         })*/  
  34.      //2.jquery单独传递含单个参数的list   
  35.      /*$(function(){  
  36.             $("#jquerytest").click(function(){  
  37.             var params={testvalue:$('#test').val()};  
  38.                 $.ajax({  
  39.                         url:"show.action",  
  40.                         data:params,  
  41.                         type:'post',  
  42.                         dataType:'json',  
  43.                         success:function(data){  
  44.                         var jsonobject=data.list;  
  45.                             for(var j=0;j<jsonobject.length;j++)  
  46.                                     {  
  47.                                         alert(jsonobject[j]);  
  48.                                     }  
  49.                             },  
  50.                         error:  function(){  
  51.                                 alert("失败");  
  52.                             }                     
  53.                 })  
  54.             })  
  55.         })*/  
  56.      //3.jquery单独传递含对象类型User的list   
  57.      $(function(){   
  58.             $("#jquerytest").click(function(){   
  59.             var params={testvalue:$('#test').val()};   
  60.                 $.ajax({   
  61.                         url:"show.action",   
  62.                         data:params,   
  63.                         type:'post',   
  64.                         dataType:'json',   
  65.                         success:function(data){   
  66.                         var jsonobject=data.userlist;   
  67.                             /*for(var j=0;j<jsonobject.length;j++)  
  68.                                     {  
  69.                                         alert(jsonobject[j].username);  
  70.                                         alert(jsonobject[j].password);  
  71.                                     }  
  72.                             */  
  73.                             $.each(jsonobject,function(key,value){   
  74.                                     alert(key+" "+value.username);   
  75.                                     alert(key+" "+value.password);   
  76.                                 })     
  77.                                 }                  
  78.                                 ,   
  79.                         error:  function(){   
  80.                                 alert("失败");   
  81.                             }                      
  82.                 })   
  83.             })   
  84.         })   
  85.      //4.jquery单独传递User对象类型   
  86.     /*$(function(){  
  87.             $("#jquerytest").click(function(){  
  88.             var params={testvalue:$('#test').val()};  
  89.                 $.ajax({  
  90.                         url:"show.action",  
  91.                         data:params,  
  92.                         type:'post',  
  93.                         dataType:'json',  
  94.                         contentType: "application/x-www-form-urlencoded; charset=UTF-8",  
  95.                         success:function(data){  
  96.                         var jsonobject=data.user;  
  97.                                         alert(jsonobject.username);  
  98.                             },  
  99.                         error:  function(){  
  100.                                 alert("失败");  
  101.                             }                     
  102.                 })  
  103.             })  
  104.         })*/  
  105.      //5.jquery传递含User对象类型的map类型   
  106.      /*$(function(){  
  107.             $("#jquerytest").click(function(){  
  108.             var params={testvalue:$('#test').val()};  
  109.                 $.ajax({  
  110.                         url:"show.action",  
  111.                         data:params,  
  112.                         type:'post',  
  113.                         dataType:'json',  
  114.                         success:function(data){  
  115.                         var jsonobject=data.map;  
  116.                             alert(data.map.s1.username);//一步一步获取值  
  117.                             $.each(data.map,function(key,value){  
  118.                                     alert(key+": "+value.username);  
  119.                                 })  
  120.                             },  
  121.                         error:  function(){  
  122.                                 alert("失败");  
  123.                             }                     
  124.                 })  
  125.             })  
  126.         })*/  
  127. // --></mce:script>   
  128.   </head>   
  129.   <body>   
  130.   <form>   
  131.   <input type="button" value="JQuery"  id="jquerytest"><br>   
  132.   <input type="text" value="美国" name="test" id="test">   
  133.   </form>   
  134.   </body>   
  135. </html>  
[java]  view plain  copy
 print ?
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  7. <html>  
  8. <head>  
  9. <mce:script type="text/javascript" src="/S2SHJQuery/js/jquery.js" mce_src="S2SHJQuery/js/jquery.js"></mce:script>  
  10. <base href="<%=basePath%>">  
  11. <title>struts2+jquery+json</title>  
  12. <mce:script type="text/javascript"><!--  
  13. //1.struts2+jquery+json单独传递单个参数  
  14. /*$(function(){ 
  15. $("#jquerytest").click(function(){ 
  16. var params={testvalue:$('#test').val()}; 
  17. $.ajax({ 
  18. url:"show.action", 
  19. data:params, 
  20. type:'post', 
  21. dataType:'json', 
  22. success:function(data){ 
  23. //data += decodeURI(data.shtml) ; 
  24. alert("成功"); 
  25. alert(data.result); 
  26. }, 
  27. error:  function(){ 
  28. alert("失败"); 
  29. } 
  30. }) 
  31. }) 
  32. })*/  
  33. //2.jquery单独传递含单个参数的list  
  34. /*$(function(){ 
  35. $("#jquerytest").click(function(){ 
  36. var params={testvalue:$('#test').val()}; 
  37. $.ajax({ 
  38. url:"show.action", 
  39. data:params, 
  40. type:'post', 
  41. dataType:'json', 
  42. success:function(data){ 
  43. var jsonobject=data.list; 
  44. for(var j=0;j<jsonobject.length;j++) 
  45. { 
  46. alert(jsonobject[j]); 
  47. } 
  48. }, 
  49. error:  function(){ 
  50. alert("失败"); 
  51. } 
  52. }) 
  53. }) 
  54. })*/  
  55. //3.jquery单独传递含对象类型User的list  
  56. $(function(){  
  57. $("#jquerytest").click(function(){  
  58. var params={testvalue:$('#test').val()};  
  59. $.ajax({  
  60. url:"show.action",  
  61. data:params,  
  62. type:'post',  
  63. dataType:'json',  
  64. success:function(data){  
  65. var jsonobject=data.userlist;  
  66. /*for(var j=0;j<jsonobject.length;j++) 
  67. { 
  68. alert(jsonobject[j].username); 
  69. alert(jsonobject[j].password); 
  70. } 
  71. */  
  72. $.each(jsonobject,function(key,value){  
  73. alert(key+" "+value.username);  
  74. alert(key+" "+value.password);  
  75. })  
  76. }  
  77. ,  
  78. error:  function(){  
  79. alert("失败");  
  80. }  
  81. })  
  82. })  
  83. })  
  84. //4.jquery单独传递User对象类型  
  85. /*$(function(){ 
  86. $("#jquerytest").click(function(){ 
  87. var params={testvalue:$('#test').val()}; 
  88. $.ajax({ 
  89. url:"show.action", 
  90. data:params, 
  91. type:'post', 
  92. dataType:'json', 
  93. contentType: "application/x-www-form-urlencoded; charset=UTF-8", 
  94. success:function(data){ 
  95. var jsonobject=data.user; 
  96. alert(jsonobject.username); 
  97. }, 
  98. error:  function(){ 
  99. alert("失败"); 
  100. } 
  101. }) 
  102. }) 
  103. })*/  
  104. //5.jquery传递含User对象类型的map类型  
  105. /*$(function(){ 
  106. $("#jquerytest").click(function(){ 
  107. var params={testvalue:$('#test').val()}; 
  108. $.ajax({ 
  109. url:"show.action", 
  110. data:params, 
  111. type:'post', 
  112. dataType:'json', 
  113. success:function(data){ 
  114. var jsonobject=data.map; 
  115. alert(data.map.s1.username);//一步一步获取值 
  116. $.each(data.map,function(key,value){ 
  117. alert(key+": "+value.username); 
  118. }) 
  119. }, 
  120. error:  function(){ 
  121. alert("失败"); 
  122. } 
  123. }) 
  124. }) 
  125. })*/  
  126. // --></mce:script>  
  127. </head>  
  128. <body>  
  129. <form>  
  130. <input type="button" value="JQuery"  id="jquerytest"><br>  
  131. <input type="text" value="美国" name="test" id="test">  
  132. </form>  
  133. </body>  
  134. </html>  
  

 

4.tableopen.jsp弹出层插件:

              

view plain copy to clipboard print ?
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">  
  3.   
  4. <head>  
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  6. <title>Thickbox Plus - Download by http://www.codefans.net</title>  
  7.   
  8. <mce:style type="text/css" media="all"><!--  
  9. @import "css/global.css";  
  10. --></mce:style><style type="text/css" media="all" mce_bogus="1">@import "css/global.css";</style>  
  11. <mce:script src="/S2SHJQuery/js/jquery.js" mce_src="S2SHJQuery/js/jquery.js" type="text/javascript"></mce:script>  
  12. <mce:script src="/S2SHJQuery/lib/thickbox_plus.js" mce_src="S2SHJQuery/lib/thickbox_plus.js" type="text/javascript"></mce:script>  
  13.   
  14. </head>  
  15. <body>  
  16.     <div id="contentPad">  
  17.     <h1>Thickbox Plus</h1>  
  18.     <div>  
  19.         <a href="images/image1.jpg" mce_href="images/image1.jpg" title="Sample caption" class="thickbox"><img src="images/image1_t.jpg" mce_src="images/image1_t.jpg" alt="Image 1" /></a>  
  20.              
  21.         <a href="images/image2.jpg" mce_href="images/image2.jpg" title="Another sample caption" class="thickbox"><img src="images/image2_t.jpg" mce_src="images/image2_t.jpg" alt="Image 2"/></a>  
  22.     </div>  
  23.     </div>  
  24. </body>  
  25. </html>  
[xhtml]  view plain  copy
 print ?
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <title>Thickbox Plus - Download by http://www.codefans.net</title>  
  6. <mce:style type="text/css" media="all"><!-- 
  7. @import "css/global.css"; 
  8. --></mce:style><style type="text/css" media="all" mce_bogus="1">@import "css/global.css";</style>  
  9. <mce:script src="/S2SHJQuery/js/jquery.js" mce_src="S2SHJQuery/js/jquery.js" type="text/javascript"></mce:script>  
  10. <mce:script src="/S2SHJQuery/lib/thickbox_plus.js" mce_src="S2SHJQuery/lib/thickbox_plus.js" type="text/javascript"></mce:script>  
  11. </head>  
  12. <body>  
  13. <div id="contentPad">  
  14. <h1>Thickbox Plus</h1>  
  15. <div>  
  16. <a href="images/image1.jpg" mce_href="images/image1.jpg" title="Sample caption" class="thickbox"><img src="images/image1_t.jpg" mce_src="images/image1_t.jpg" alt="Image 1" /></a>  
  17.     
  18. <a href="images/image2.jpg" mce_href="images/image2.jpg" title="Another sample caption" class="thickbox"><img src="images/image2_t.jpg" mce_src="images/image2_t.jpg" alt="Image 2"/></a>  
  19. </div>  
  20. </div>  
  21. </body>  
  22. </html>  

 

5.tablesorter.jsp排序层插件:

             

view plain copy to clipboard print ?
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%   
  3.     String path = request.getContextPath();   
  4.     String basePath = request.getScheme() + "://"   
  5.             + request.getServerName() + ":" + request.getServerPort()   
  6.             + path + "/";   
  7. %>  
  8.   
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  10. <html>  
  11.     <head>  
  12.         <base href="<%=basePath%>">  
  13.   
  14.         <title>列表排序</title>  
  15.         <link rel="stylesheet" type="text/css" media="screen"  
  16.             href="css/screen.css" />  
  17.         <mce:script src="/S2SHJQuery/js/jquery.js" mce_src="S2SHJQuery/js/jquery.js"  
  18.             type="text/javascript"></mce:script>  
  19.         <mce:script  
  20.             src="/S2SHJQuery/lib/jquery.tablesorter.js"  
  21.             type="text/javascript"></mce:script>  
  22.         <mce:script type="text/javascript"><!--   
  23.         $(document).ready(function() {   
  24.                 $("#userList").tablesorter({sortList: [ [2,1]]} );//也可通过传递参数来实现   
  25.             });    
  26.        
  27. // --></mce:script>  
  28.     </head>  
  29.     <body>  
  30.         This is my JSP page.   
  31.         <br>  
  32.         <table id="userList">  
  33.     <thead>  
  34.         <tr>  
  35.             <th>Name</th>  
  36.             <th>Sex</th>  
  37.             <th>old</th>  
  38.         </tr>  
  39.     </thead>  
  40.     <tbody>  
  41.     <tr>  
  42.             <td>李四</td>  
  43.             <td></td>  
  44.             <td>14</td>  
  45.         </tr>  
  46.         <tr>  
  47.             <td>张三</td>  
  48.             <td></td>  
  49.             <td>50</td>  
  50.         </tr>  
  51.         <tr>  
  52.             <td>赵五</td

你可能感兴趣的:(Java-json格式)