Json转换

http://jc-dreaming.iteye.com/blog/1007157

import java.util.Collection;   
   import java.util.HashMap;   
   import java.util.Map;   
   import net.sf.json.JSONArray;   
   import net.sf.json.JSONObject;   
     
   /**  
   * JSON和JAVA的POJO的相互转换  
   *  
   * @author ptah 2009-10-16 JSONUtil.java  
   */   
   public final class JSONUtil {   
     
   // 将String转换成JSON   
   public static String string2json(String key, String value) {   
   JSONObject object = new JSONObject();   
   object.put(key, value);   
   return object.toString();   
   }   
   // 将JSON转换成数组,其中valueClz为数组中存放的对象的Class   
   public static Object json2Array(String json, Class valueClz) {   
   JSONArray jsonArray = JSONArray.fromObject(json);   
   return JSONArray.toArray(jsonArray, valueClz);   
   }   
     
   // 将Collection转换成JSON   
   public static String collection2json(Object object) {   
   JSONArray jsonArray = JSONArray.fromObject(object);   
   return jsonArray.toString();   
   }   
     
   // 将JSON转换成Collection,其中collectionClz为Collection具体子类的Class,   
   // valueClz为Collection中存放的对象的Class   
   public static Collection json2Collection(String json, Class collectionClz,   
   Class valueClz) {   
   JSONArray jsonArray = JSONArray.fromObject(json);   
   return JSONArray.toCollection(jsonArray, valueClz);   
   }   
     
   // 将数组转换成JSON   
   public static String array2json(Object object) {   
   JSONArray jsonArray = JSONArray.fromObject(object);   
   return jsonArray.toString();   
   }   
   // 将Map转换成JSON   
   public static String map2json(Object object) {   
   JSONObject jsonObject = JSONObject.fromObject(object);   
   return jsonObject.toString();   
   }   
     
   // 将JSON转换成Map,其中valueClz为Map中value的Class,keyArray为Map的key   
   public static Map json2Map(Object[] keyArray, String json, Class valueClz) {   
   JSONObject jsonObject = JSONObject.fromObject(json);   
   Map classMap = new HashMap();   
     
   for (int i = 0; i < keyArray.length; i++) {   
   classMap.put(keyArray[i], valueClz);   
   }   
     
   return (Map) JSONObject.toBean(jsonObject, Map.class, classMap);   
   }   
     
   // 将POJO转换成JSON   
   public static String bean2json(Object object) {   
   JSONObject jsonObject = JSONObject.fromObject(object);   
   return jsonObject.toString();   
   }   
     
   // 将JSON转换成POJO,其中beanClz为POJO的Class   
   public static Object json2Object(String json, Class beanClz) {   
   return JSONObject.toBean(JSONObject.fromObject(json), beanClz);   
   }   
     
   // 将JSON转换成String   
   public static String json2String(String json, String key) {   
   JSONObject jsonObject = JSONObject.fromObject(json);   
   return jsonObject.get(key).toString();   
   }   
     
   }   
  import java.util.Collection;   
   import java.util.HashMap;   
   import java.util.Map;   
   import net.sf.json.JSONArray;   
   import net.sf.json.JSONObject;   
     
   /**  
   * JSON和JAVA的POJO的相互转换  
   *  
   * @author ptah 2009-10-16 JSONUtil.java  
   */   
   public final class JSONUtil {   
     
   // 将String转换成JSON   
   public static String string2json(String key, String value) {   
   JSONObject object = new JSONObject();   
   object.put(key, value);   
   return object.toString();   
   }   
   // 将JSON转换成数组,其中valueClz为数组中存放的对象的Class   
   public static Object json2Array(String json, Class valueClz) {   
   JSONArray jsonArray = JSONArray.fromObject(json);   
   return JSONArray.toArray(jsonArray, valueClz);   
   }   
     
   // 将Collection转换成JSON   
   public static String collection2json(Object object) {   
   JSONArray jsonArray = JSONArray.fromObject(object);   
   return jsonArray.toString();   
   }   
     
   // 将JSON转换成Collection,其中collectionClz为Collection具体子类的Class,   
   // valueClz为Collection中存放的对象的Class   
   public static Collection json2Collection(String json, Class collectionClz,   
   Class valueClz) {   
   JSONArray jsonArray = JSONArray.fromObject(json);   
   return JSONArray.toCollection(jsonArray, valueClz);   
   }   
     
   // 将数组转换成JSON   
   public static String array2json(Object object) {   
   JSONArray jsonArray = JSONArray.fromObject(object);   
   return jsonArray.toString();   
   }   
   // 将Map转换成JSON   
   public static String map2json(Object object) {   
   JSONObject jsonObject = JSONObject.fromObject(object);   
   return jsonObject.toString();   
   }   
     
   // 将JSON转换成Map,其中valueClz为Map中value的Class,keyArray为Map的key   
   public static Map json2Map(Object[] keyArray, String json, Class valueClz) {   
   JSONObject jsonObject = JSONObject.fromObject(json);   
   Map classMap = new HashMap();   
     
   for (int i = 0; i < keyArray.length; i++) {   
   classMap.put(keyArray[i], valueClz);   
   }   
     
   return (Map) JSONObject.toBean(jsonObject, Map.class, classMap);   
   }   
     
   // 将POJO转换成JSON   
   public static String bean2json(Object object) {   
   JSONObject jsonObject = JSONObject.fromObject(object);   
   return jsonObject.toString();   
   }   
     
   // 将JSON转换成POJO,其中beanClz为POJO的Class   
   public static Object json2Object(String json, Class beanClz) {   
   return JSONObject.toBean(JSONObject.fromObject(json), beanClz);   
   }   
     
   // 将JSON转换成String   
   public static String json2String(String json, String key) {   
   JSONObject jsonObject = JSONObject.fromObject(json);   
   return jsonObject.get(key).toString();   
   }   
     
   }   

转载http://blog.toright.com/?p=397
JSON Format
JSON為輕量級的資料表示格式,比起 XML 鬆散許多且不需要定義描述檔,JSON網站 http://json.org/

Json-lib API
Json-lib 為在眾多處理 Jsob Format API 中實作功能比較多的一個套件,可由下列網址取得。

http://json-lib.sourceforge.net/ 此外,Json-lib還需要以下 Library

jakarta commons-lang 2.4
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1.1
ezmorph 1.0.6
JSON 與 POJO 轉換實作
設計兩個Model

    Model.java  
      
    private String title;  
        private int num;  
        private Integer sort;  
        private Date date;  
        private String[] strArray;  
        private SubModel subModel;  
    SubModel.java  
      
    private String name;  
    Marshal 實作  
    Object2JSON.java  
      
    import java.util.Date;  
      
    import net.sf.json.JSONObject;  
      
    public class Object2JSON {  
      
        public static void main(String[] args) {  
            //產生Model  
            Model model = new Model();  
            model.setTitle("Master MOdel");  
            model.setNum(99);  
            model.setSort(10);  
            model.setDate(new Date());  
            model.setStrArray(new String[]{"str1","str2"});  
            SubModel subModel = new SubModel();  
            subModel.setName("MySubModel");  
            model.setSubModel(subModel);  
            //轉換為JSON  
            String json = JSONObject.fromObject(model).toString();  
            //顯示XML  
            System.out.println(json);  
        }  
      
    }  
    Unmarshal 實作  
    JSON2Object.java  
      
    import net.sf.json.JSONObject;  
      
    public class JSON2Object {  
      
        public static void main(String[] args) {  
            String json = "{\"date\":{\"date\":27,\"day\":2,\"hours\":15,\"minutes\":30,\"month\":9,\"seconds\":35,\"time\":1256628635421,\"timezoneOffset\":-480,\"year\":109},\"num\":99,\"sort\":10,\"strArray\":[\"str1\",\"str2\"],\"subModel\":{\"name\":\"MySubModel\"},\"title\":\"Master MOdel\"}";  
            //轉換JavaBean  
            Model model = (Model)JSONObject.toBean( JSONObject.fromObject( json ), Model.class );  
            //顯示內容  
            System.out.println("Title:"+model.getTitle());  
            System.out.println("Num:"+model.getNum());  
            System.out.println("Sort:"+model.getSort());  
            System.out.println("Date:"+model.getDate());  
            System.out.println("SubModel:"+model.getSubModel());  
            System.out.println("SubModel[Name]:"+model.getSubModel().getName());  
        }  
      
    }  
/**
*

Json-lib 結論
過測試之後發現 Json 對 Array 是支援的,
但是對於 List 與 Hashtable 的 Unmarshal 卻是不支援。
假設 Json 未來成為 Web Service 重要的傳輸格式,
那麼實作 Json 更高階的 Unmarshal 是絕對必要的工作。
*/

 

posted @ 2016-12-15 10:33  小啊菜鸡  阅读(731)  评论(0编辑  收藏  举报