json格式轉換

來源:互聯網
上載者:User

標籤:des   http   java   使用   os   io   資料   for   

json資料轉換

import java.io.IOException;import java.io.StringWriter;import java.util.ArrayList;import java.util.Collections;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import org.apache.commons.lang3.StringUtils;import org.codehaus.jackson.JsonFactory;import org.codehaus.jackson.JsonGenerator;import org.codehaus.jackson.JsonParseException;import org.codehaus.jackson.map.DeserializationConfig.Feature;import org.codehaus.jackson.map.JsonMappingException;import org.codehaus.jackson.map.ObjectMapper;import org.codehaus.jackson.type.TypeReference;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;public class JsonParse {    /**     * 轉換成json資料     *      * @param obj     * @return     */    public static String getJson(Object obj) {        if (obj == null)            return null;        ObjectMapper om = new ObjectMapper();        StringWriter sw = new StringWriter();        try {            JsonGenerator jg = new JsonFactory().createJsonGenerator(sw);            om.writeValue(jg, obj);            jg.close();        } catch (IOException e) {            e.printStackTrace();        }        return sw.toString();    }    /**     * 將json資料轉換成List<Object>     *      * @param json     * @param entityClass     * @return     */    public static <T> List<T> getList(String json, Class<T> entityClass) {        if (StringUtils.isBlank(json))            return null;        List<T> list = new ArrayList<T>();        ObjectMapper om = new ObjectMapper();        om.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);        try {            JSONArray array = new JSONArray(json);            for (int i = 0; i < array.length(); i++) {                T t = om.readValue(array.getString(i), entityClass);                list.add(t);            }            return list;        } catch (JsonParseException e) {            e.printStackTrace();        } catch (JsonMappingException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } catch (JSONException e) {            e.printStackTrace();        }        return null;    }    /**     * 將json資料轉換成List<LinkedHashMap<String, Object>>     *      * @param json     * @return     */    @SuppressWarnings("unchecked")    public static List<LinkedHashMap<String, Object>> getListMap(String json) {        if (StringUtils.isBlank(json))            return null;        ObjectMapper om = new ObjectMapper();        om.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);        try {            List<LinkedHashMap<String, Object>> list = om.readValue(json, List.class);            return list;        } catch (JsonParseException e) {            e.printStackTrace();        } catch (JsonMappingException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }    /**     * 將json資料轉換成List<Map<String, T>>     *      * @param json     * @return     */    public static <T> List<Map<String, T>> getListMap(String json, Class<T> entityClass) {        if (StringUtils.isBlank(json))            return null;        ObjectMapper om = new ObjectMapper();        om.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);        try {            List<Map<String, T>> list = om.readValue(json, new TypeReference<List<Map<String, T>>>() {            });            return list;        } catch (JsonParseException e) {            e.printStackTrace();        } catch (JsonMappingException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }    /**     * 將json資料轉換成Map<String, Object>     *      * @param json     * @return     */    @SuppressWarnings("unchecked")    public static Map<String, Object> getMap(String json) {        if (StringUtils.isBlank(json))            return null;        ObjectMapper om = new ObjectMapper();        om.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);        try {            Map<String, Object> map = om.readValue(json, Map.class);            return map;        } catch (JsonParseException e) {            e.printStackTrace();        } catch (JsonMappingException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }    /**     * 將json資料轉換成Map<String, T>     *      * @param json     * @return     */    public static <T> Map<String, T> getMap(String json, Class<T> entityClass) {        if (StringUtils.isBlank(json))            return null;        ObjectMapper om = new ObjectMapper();        om.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);        try {            Map<String, T> list = om.readValue(json, new TypeReference<Map<String, T>>() {            });            return list;        } catch (JsonParseException e) {            e.printStackTrace();        } catch (JsonMappingException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }    /**     * 將json資料轉換成指定的類型     *      * @param json     * @param valueType     * @return     */    public static <T> T getObject(String json, Class<T> valueType) {        if (StringUtils.isBlank(json))            return null;        ObjectMapper om = new ObjectMapper();        om.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);        try {            return om.readValue(json, valueType);        } catch (JsonParseException e) {            e.printStackTrace();        } catch (JsonMappingException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }}


在BaseControl中可以寫一個這樣的方法

    /**     * 輸出HTML指令碼     */    protected void writeJson(HttpServletResponse response, Object obj) {        this.writeJson(response, obj, "utf-8");    }    /**     * 輸出HTML指令碼帶格式     */    protected void writeJson(HttpServletResponse response, Object obj, String charset) {        String json = JsonParse.getJson(obj);        response.setContentType("text/html;charset=" + charset);        response.setDateHeader("Expires", -10);        PrintWriter out = null;        try {            out = response.getWriter();            out.println(json);            out.flush();        } catch (IOException e) {            e.printStackTrace();        } finally {            if (out != null)                out.close();        }    }


在使用時,繼承BaseControl,調用writeJson方法,返回給前台的是json格式的字串。

this.writeJson(response, helloService.getSomething(id));


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.