您的位置:首页 > Web前端 > JavaScript

Json转换

2016-12-15 10:33 253 查看
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 是絕對必要的工作。
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: