JSON基本知识(三)

相关jar包:

commons-beanutils-1.7.0.jar    

commons-lang-2.1.jar   

ezmorph-1.0.2.jar   

json-lib-1.1-jdk15.jar  

 

html代码:

  1.  List集合转换成json代码  
  2. List list = new ArrayList();  
  3. list.add( "first" );  
  4. list.add( "second" );  
  5. JSONArray jsonArray2 = JSONArray.fromObject( list );  
  6. 2. Map集合转换成json代码  
  7. Map map = new HashMap();  
  8. map.put("name", "json");  
  9. map.put("bool", Boolean.TRUE);  
  10. map.put("int", new Integer(1));  
  11. map.put("arr", new String[] { "a", "b" });  
  12. map.put("func", "function(i){ return this.arr[i]; }");  
  13. JSONObject json = JSONObject.fromObject(map);  
  14. 3. Bean转换成json代码  
  15. JSONObject jsonObject = JSONObject.fromObject(new JsonBean());  
  16. 4. 数组转换成json代码  
  17. boolean[] boolArray = new boolean[] { true, false, true };  
  18. JSONArray jsonArray1 = JSONArray.fromObject(boolArray);  
  19. 5. 一般数据转换成json代码  
  20. JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );<p>  
  21. [color=red]response.getWriter().write(jsonArray2.toString());[/color]</p> 

 

  1. <html>  
  2.   <head>  
  3.     <title>My JSP 'json.jsp' starting page</title>  
  4.  <script type="text/javascript" src="js/jquery-1.3.2.js"></script>  
  5.  <script type="text/javascript">  
  6.   $(document).ready(function(){  
  7.   var txt = '{"employees":[' +  
  8.    '{"firstName":"Bill","lastName":"Gates" },' +  
  9.    '{"firstName":"George","lastName":"Bush" },' +  
  10.    '{"firstName":"Thomas","lastName":"Carter" }]}';  
  11.      
  12.   var JSONObject= {  
  13.     "name":"Bill Gates",  
  14.     "street":"Fifth Avenue New York 666",  
  15.     "age":56,  
  16.     "phone":"555 1234567"};  
  17.   var book = '{"hcz":[{"author":"hong","author1":"honglou"},{"author":"hong1","author1":"honglou1"}]}';  
  18.    $("#btn").click(function(){  
  19.     var dataObject = eval("("+txt+")");  
  20.     alert(dataObject.employees[1].firstName);  
  21.    });  
  22.    $("#btn1").click(function(){  
  23.     alert(JSONObject.name);  
  24.    });  
  25.    $("#btn2").click(function(){  
  26.     var bookObject = eval("("+book+")");  
  27.     alert(bookObject.hcz[1].author);  
  28.    });  
  29.      
  30.   });  
  31.  </script>   
  32.   </head>    
  33.   <body>  
  34.    <input type="button" value="Button0" id="btn" />  
  35.    <input type="button" value="Button1" id="btn1" />  
  36.     <input type="button" value="Button2" id="btn2" />  
  37.   </body>  
  38. </html>  

 

java代码:

  1. package com.test;  
  2.   
  3. import java.util.Collection;  
  4. import java.util.HashMap;  
  5. import java.util.Map;  
  6.   
  7. import net.sf.json.JSONArray;  
  8. import net.sf.json.JSONObject;  
  9.   
  10. /** 
  11.  * JSON和JAVA的POJO的相互转换 
  12.  *  
  13.  * @author tanpingping 
  14.  * @date 2012-5-15 
  15.  */  
  16. public final class JSONUtils {  
  17.     /** 
  18.      * 将String转换成JSON 
  19.      *  
  20.      * @param key 
  21.      * @param value 
  22.      * @return json格式的字符串 
  23.      */  
  24.     public String stringToJson(String key, String value) {  
  25.         JSONObject object = new JSONObject();  
  26.         object.put(key, value);  
  27.         return object.toString();  
  28.     }  
  29.   
  30.     /** 
  31.      * 将JSON转换成数组,其中valueClz为数组中存放的对象的Class 
  32.      *  
  33.      * @param json格式的字符串 
  34.      *            如:[{'name':'李名','password':'10aVB','age':'15'}] 
  35.      * @param valueClz 
  36.      *            需要转换的Class对象 如:User 
  37.      * @return valueClz对象的数组 
  38.      */  
  39.     @SuppressWarnings("unchecked")  
  40.     public Object jsonToArray(String json, Class valueClz) {  
  41.         JSONArray jsonArray = JSONArray.fromObject(json);  
  42.         return JSONArray.toArray(jsonArray, valueClz);  
  43.     }  
  44.   
  45.     /** 
  46.      * 将Collection转换成JSON 
  47.      *  
  48.      * @param object 
  49.      *            需要对象的值转换 
  50.      * @return 
  51.      */  
  52.     public String collectionToJson(Object object) {  
  53.         JSONArray jsonArray = JSONArray.fromObject(object);  
  54.         return jsonArray.toString();  
  55.     }  
  56.   
  57.     /** 
  58.      * 将JSON转换成Collection,其中collectionClz为Collection具体子类的Class, 
  59.      *  
  60.      * @param json 
  61.      * @param collectionClz 
  62.      *            这个值没用到 
  63.      * @param valueClz 
  64.      *            为Collection中存放的对象的Class 
  65.      * @return 
  66.      */  
  67.     @SuppressWarnings("unchecked")  
  68.     public Collection jsonToCollection(String json, Class collectionClz,  
  69.             Class valueClz) {  
  70.         JSONArray jsonArray = JSONArray.fromObject(json);  
  71.         return JSONArray.toCollection(jsonArray, valueClz);  
  72.     }  
  73.   
  74.     /** 
  75.      * 将数组转换成JSON 
  76.      *  
  77.      * @param object 
  78.      *            需要转换的数组 
  79.      * @return 
  80.      */  
  81.     public String arrayToJson(Object object) {  
  82.         JSONArray jsonArray = JSONArray.fromObject(object);  
  83.         return jsonArray.toString();  
  84.     }  
  85.   
  86.     /** 
  87.      * 将Map转换成JSON 
  88.      *  
  89.      * @param object 
  90.      * @return 
  91.      */  
  92.     public String mapToJson(Object object) {  
  93.         JSONObject jsonObject = JSONObject.fromObject(object);  
  94.         return jsonObject.toString();  
  95.     }  
  96.   
  97.     /** 
  98.      * 将JSON转换成Map 
  99.      *  
  100.      * @param keyArray 
  101.      *            为Map的key 
  102.      * @param json 
  103.      * @param valueClz 
  104.      *            为Map中value的Class 
  105.      * @return Map对象 
  106.      */  
  107.     @SuppressWarnings("unchecked")  
  108.     public Map jsonToMap(Object[] keyArray, String json, Class valueClz) {  
  109.         JSONObject jsonObject = JSONObject.fromObject(json);  
  110.         Map classMap = new HashMap();  
  111.   
  112.         for (int i = 0; i < keyArray.length; i++) {  
  113.             classMap.put(keyArray[i], valueClz);  
  114.         }  
  115.         return (Map) JSONObject.toBean(jsonObject, Map.class, classMap);  
  116.     }  
  117.   
  118.     /** 
  119.      * 将POJO转换成JSON 
  120.      *  
  121.      * @param object 
  122.      *            需要转换的对象 
  123.      * @return 
  124.      */  
  125.     public String beanToJson(Object bean) {  
  126.         JSONObject jsonObject = JSONObject.fromObject(bean);  
  127.         return jsonObject.toString();  
  128.     }  
  129.   
  130.     /** 
  131.      * 将JSON转换成POJO 
  132.      *  
  133.      * @param json 
  134.      * @param beanClz 
  135.      *            为POJO的Class 
  136.      * @return 
  137.      */  
  138.     public Object jsonToObject(String json, Class beanClz) {  
  139.         return JSONObject.toBean(JSONObject.fromObject(json), beanClz);  
  140.     }  
  141.   
  142.     /** 
  143.      * 将JSON转换成String 
  144.      *  
  145.      * @param json 
  146.      * @param key 
  147.      * @return 
  148.      */  
  149.     public String jsonToString(String json, String key) {  
  150.         JSONObject jsonObject = JSONObject.fromObject(json);  
  151.         return jsonObject.get(key).toString();  
  152.     }  
  153.      /** 
  154.   * JAVA数组对象转换成JSON字符串 
  155.   *  
  156.   * @param list JAVA数组对象 
  157.   * @return JSON字符串 
  158.   * @throws MapperException 
  159.   */  
  160.  public static String obj2Json(List<Class<?>> list) throws MapperException {  
  161.   if (list == null || list.size() == 0) {  
  162.    return "{}";  
  163.   }  
  164.   StringBuilder jsonString = new StringBuilder();  
  165.   for (int i = 0; i < list.size(); i++) {  
  166.    if (i != 0) {  
  167.     jsonString.append(",");  
  168.    }  
  169.    Class<?> cla = list.get(i);  
  170.    jsonString.append(obj2Json(cla, false));  
  171.   }  
  172.   return jsonString.toString();  
  173.  }  
  1. /** 
  2.   * JAVA集合对象转换成JSON字符串 
  3.   *  
  4.   * @param map JAVA集合对象 
  5.   * @return JSON字符串 
  6.   * @throws MapperException 
  7.   */  
  8.  public static String obj2Json(Map<String, Class<?>> map) throws MapperException {  
  9.   if (map == null || map.size() == 0) {  
  10.    return "{}";  
  11.   }  
  12.   StringBuilder jsonString = new StringBuilder();  
  13.   Set<String> keySet = map.keySet();  
  14.   boolean isFirst = true;  
  15.   for (String key : keySet) {  
  16.    if (isFirst) {  
  17.     isFirst = false;  
  18.    } else {  
  19.     jsonString.append(",");  
  20.    }  
  21.    Class<?> cla = map.get(key);  
  22.    jsonString.append(obj2Json(cla, false));  
  23.   }  
  24.   return jsonString.toString();  
  25.  }  
  26.    
  27.  /** 
  28.   * JAVA集合对象转换成JSON字符串 
  29.   *  
  30.   * @param map JAVA集合对象 
  31.   * @return JSON字符串 
  32.   * @throws MapperException 
  33.   */  
  34.  @SuppressWarnings("unchecked")  
  35.  public static String map2Json(Map<?,?> map) throws MapperException {  
  36.   MapBean mapBean = new MapBean((Map<String, Object>)map);  
  37.   return obj2Json(mapBean);  
  38.  }  
 /**
  * JAVA集合对象转换成JSON字符串
  * 
  * @param map JAVA集合对象
  * @return JSON字符串
  * @throws MapperException
  */
 public static String obj2Json(Map<String, Class<?>> map) throws MapperException {
  if (map == null || map.size() == 0) {
   return "{}";
  }
  StringBuilder jsonString = new StringBuilder();
  Set<String> keySet = map.keySet();
  boolean isFirst = true;
  for (String key : keySet) {
   if (isFirst) {
    isFirst = false;
   } else {
    jsonString.append(",");
   }
   Class<?> cla = map.get(key);
   jsonString.append(obj2Json(cla, false));
  }
  return jsonString.toString();
 }
 
 /**
  * JAVA集合对象转换成JSON字符串
  * 
  * @param map JAVA集合对象
  * @return JSON字符串
  * @throws MapperException
  */
 @SuppressWarnings("unchecked")
 public static String map2Json(Map<?,?> map) throws MapperException {
  MapBean mapBean = new MapBean((Map<String, Object>)map);
  return obj2Json(mapBean);
 }

 

Java代码
  1.  /** 
  2.   * JAVA数组对象转换成JSON字符串 
  3.   *  
  4.   * @param list JAVA数组对象 
  5.   * @return JSON字符串 
  6.   * @throws MapperException 
  7.   */  
  8.  public static String list2Json(List<?> list) throws MapperException {  
  9.   ListBean listBean = new ListBean(list);  
  10.   return obj2Json(listBean);  
  11.  }  

 

  1. /** 
  2.   * 重载objectToJsonStr方法 
  3.   *  
  4.   * @param obj 需要转换的JAVA对象 
  5.   * @param format 是否格式化 
  6.   * @return JSON字符串 
  7.   * @throws MapperException 
  8.   */  
  9.  public static String obj2Json(Object obj, boolean format) throws MapperException {  
  10.   JSONValue jsonValue = JSONMapper.toJSON(obj);  
  11.   String jsonStr = jsonValue.render(format);  
  12.   return jsonStr;  
  13.  }  
  1. /** 
  2.   * JSON字符串转换成JAVA对象 
  3.   *  
  4.   * @param jsonStr JSON字符串 
  5.   * @param cla JAVA对象 
  6.   * @return 转换后的对象 
  7.   */  
  8.  public static Object json2Obj(String jsonStr, Class<?> cla) throws Exception {  
  9.   Object obj = null;  
  10.   try {  
  11.    JSONParser parser = new JSONParser(new StringReader(jsonStr));  
  12.    JSONValue jsonValue = parser.nextValue();  
  13.    if (jsonValue instanceof com.sdicons.json.model.JSONArray) {  
  14.     List<Object> list = new ArrayList<Object>();  
  15.     JSONArray jsonArray = (JSONArray) jsonValue;  
  16.     for (int i = 0; i < jsonArray.size(); i++) {  
  17.      JSONValue jsonObj = jsonArray.get(i);  
  18.      Object javaObj = JSONMapper.toJava(jsonObj, cla);  
  19.      list.add(javaObj);  
  20.     }  
  21.     obj = list;  
  22.    } else if (jsonValue instanceof com.sdicons.json.model.JSONObject) {  
  23.     obj = JSONMapper.toJava(jsonValue, cla);  
  24.    } else {  
  25.     obj = jsonValue;  
  26.    }  
  27.   } catch (Exception e) {  
  28.    e.printStackTrace();  
  29.   }  
  30.   return obj;  
  31.  }  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值