json網路資料轉送–HttpJsonAdapter

來源:互聯網
上載者:User

伺服器端與用戶端之前通過json資料轉送,用戶端跟伺服器端之前的javabean與String之間的轉換

import java.lang.reflect.Field;import java.util.HashMap;import java.util.List;import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.google.gson.reflect.TypeToken;public class HttpJsonAdapter {private static HttpJsonAdapter instance = null;private HttpJsonAdapter() {}public static synchronized HttpJsonAdapter getInstance() {if (instance == null) {instance = new HttpJsonAdapter();}return instance;}// json轉為帶泛型的listpublic <T> List<T> gets(String str, Class<T> clazz) {        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss")                 .create();         // json轉為帶泛型的list         return gson.fromJson(str, new TypeToken<List<T>>() {         }.getType());    }public <T> T get(String str, Class<T> clazz) throws BizException {Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();try {return (T) gson.fromJson(str, clazz);} catch (Exception e) {throw new BizException("資料處理異常", e);}}public static String getMapToJson(Object obj) {Gson gson = new Gson();HashMap<String, Object> objmap = new HashMap<String, Object>();return gson.toJson(toGson(objmap, obj, obj.getClass()));}/** 只支援繼承 * */@SuppressWarnings("unchecked")public static HashMap<String, Object> toGson(HashMap<String, Object> objmap, Object obj, Class clazz) {// 父類Class SuperClass = clazz.getSuperclass();// 介面數組// Class[] InterClass=clazz.getInterfaces();Field[] ffields = clazz.getSuperclass().getDeclaredFields();Field[] fields = clazz.getDeclaredFields();for (Field field : fields) {boolean flag = field.isAccessible();field.setAccessible(true);try {objmap.put(field.getName(), field.get(obj));} catch (IllegalArgumentException e) {} catch (IllegalAccessException e) {e.printStackTrace();}field.setAccessible(flag);}for (Field field : ffields) {boolean flag = field.isAccessible();field.setAccessible(true);try {objmap.put(field.getName(), field.get(obj));} catch (IllegalArgumentException e) {} catch (IllegalAccessException e) {e.printStackTrace();}field.setAccessible(flag);}if (SuperClass != Object.class) {return toGson(objmap, obj, SuperClass);} else {return objmap;}}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.