鑑於json數據傳輸的使用,能夠在實體類基礎上設計基類java
public abstract class BaseModel implements Serializable{ private static final long serialVersionUID=1L; //==============json===============// /** * 從JSONObject中讀取字段 * @param obj */ public BaseModel parseJson(JSONObject obj){ return this; } /** * 從json中讀取字段 * @param json * @throws JSONException */ public BaseModel parseJson(String json) throws JSONException{ return parseJson(new JSONObject(json)); } /** * 轉成JSONObject * @throws JSONException */ public JSONObject toJSONObject() throws JSONException{ return new JSONObject(); } /** * 轉成json格式 * @throws JSONException */ public String toJSON() throws JSONException{ return toJSONObject().toString(); } @Override public String toString() { try { return toJSON(); } catch (JSONException e) { } return ""; } /** * 判斷字符串是否爲空 * @param str * @return true - 全爲空, false - 有一個不爲空 */ public static boolean isEmpty(String ...str){ if (str == null) return true; for (int i=0;i<str.length;i++) if (str[i]!=null && !"".equals(str[i]))return false; return true; } }
實體類使用時繼承便可json
public class Model extends BaseModel implements Cloneable{ private String aa=null; private String bb=null; private String cc=null; public String getAa() { return aa; } public String getBb() { return bb; } public String getCc() { return cc; } //==============json=============// @Override public Model parseJson(JSONObject obj) { aa=obj.optString("aa"); bb=obj.optString("bb"); cc=obj.optString("cc"); return this; } @Override public JSONObject toJSONObject() throws JSONException { JSONObject o=new JSONObject(); o.put("aa", aa); o.put("bb", bb); o.put("cc", cc); return o; } public Model getClone(){ try { return (Model)this.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return null; } }