Json工具类

来源:互联网 发布:风驰网络加速器官网 编辑:程序博客网 时间:2024/05/01 10:35


package cn.fiyo.base.util;import java.io.IOException;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.beans.propertyeditors.CustomDateEditor;import org.springframework.beans.propertyeditors.StringTrimmerEditor;import org.springframework.web.bind.ServletRequestDataBinder;import cn.easecom.platform.module.basic.web.user.UserContext;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class JsonUtils {private static final Log log = LogFactory.getLog(JsonUtils.class);public JsonUtils() {}/** * 向客户端输出JSON */public static void outputJson(HttpServletResponse response, JSONObject json)throws Exception {response.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();out.write(json.toString());out.flush();}/**  * 从一个JSON 对象字符格式中得到一个java对象 *  */public static Object toBean(String jsonString, Class beanClass) {JSONObject jsonObject = JSONObject.fromObject(jsonString);Object object = JSONObject.toBean(jsonObject, beanClass);return object;}public static Object toBean(String jsonString, Class beanClass,Map map) {JSONObject jsonObject = JSONObject.fromObject(jsonString);Object object = JSONObject.toBean(jsonObject, beanClass,map);return object;}/**  * 从json对象集合表达式中得到一个java对象列表 * @param jsonString:数组字符串[{key1:value1,key2:value2},{bean2},{bean3},...] * @param pojoClass * @return */public static List toList(String jsonString, Class beanClass) {JSONArray jsonArray = JSONArray.fromObject(jsonString);List list = new ArrayList();for (int i = 0; i < jsonArray.size(); i++) {JSONObject jsonObject = jsonArray.getJSONObject(i);Object object = JSONObject.toBean(jsonObject, beanClass);list.add(object);}return list;}public static List toList(String jsonString, Class beanClass,Map map) {JSONArray jsonArray = JSONArray.fromObject(jsonString);List list = new ArrayList();for (int i = 0; i < jsonArray.size(); i++) {JSONObject jsonObject = jsonArray.getJSONObject(i);Object object = JSONObject.toBean(jsonObject, beanClass,map);list.add(object);}return list;}/**  * 从json字符串中获取一个map,该map支持嵌套功能 * @param jsonString * @return */public static Map toMap(String jsonString) {JSONObject jsonObject = JSONObject.fromObject(jsonString);Iterator it = jsonObject.keys();Map map = new HashMap();while (it.hasNext()) {String key = (String) it.next();Object value = jsonObject.get(key);map.put(key, value);}return map;}/** * 从json数组中得到相应java数组 * @param jsonString * @return */public static Object[] toObjectArray(String jsonString) {JSONArray jsonArray = JSONArray.fromObject(jsonString);return jsonArray.toArray();}/**  * 从json解析出java字符串数组 * @param jsonString * @return */public static String[] toStringArray(String jsonString) {JSONArray jsonArray = JSONArray.fromObject(jsonString);String[] stringArray = new String[jsonArray.size()];for (int i = 0; i < jsonArray.size(); i++) {stringArray[i] = jsonArray.getString(i);}return stringArray;}/**  * 从json解析出javaLong型对象数组 * @param jsonString * @return */public static Long[] toLongArray(String jsonString) {JSONArray jsonArray = JSONArray.fromObject(jsonString);Long[] longArray = new Long[jsonArray.size()];for (int i = 0; i < jsonArray.size(); i++) {longArray[i] = jsonArray.getLong(i);}return longArray;}/** * 从json解析出java Integer型对象数组 * @param jsonString:[1,2,3,4] * @return */public static Integer[] toIntegerArray(String jsonString) {JSONArray jsonArray = JSONArray.fromObject(jsonString);Integer[] integerArray = new Integer[jsonArray.size()];for (int i = 0; i < jsonArray.size(); i++) {integerArray[i] = jsonArray.getInt(i);}return integerArray;}/** * 从json中解析出java Double型对象数组 * @param jsonString * @return */public static Double[] toDoubleArray(String jsonString) {JSONArray jsonArray = JSONArray.fromObject(jsonString);Double[] doubleArray = new Double[jsonArray.size()];for (int i = 0; i < jsonArray.size(); i++) {doubleArray[i] = jsonArray.getDouble(i);}return doubleArray;}/** * 将java对象转换成json字符串 * @param javaObj * @return */public static String toJsonString(Object object) {JSONObject json = JSONObject.fromObject(object);return json.toString();}/* * 将java对象转化为json数组字符串 * [{"name":"name1","id":"id1"},{"name":"name2","id":"id2"}] */public static String toJsonArrayString(List<Object> list) {JSONArray jsonArray = JSONArray.fromObject(list);return jsonArray.toString();}private String dateFormat = "yyyy-MM-dd";    public void setDateFormat(String dateFormat){        this.dateFormat = dateFormat;    }    /**     * 格式化日期字符串     */    public void initBinder(HttpServletRequest request,ServletRequestDataBinder binder){        SimpleDateFormat dateFormat = new SimpleDateFormat(this.dateFormat);        dateFormat.setLenient(false);        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));        binder.registerCustomEditor(String.class,new StringTrimmerEditor(false));    }       @SuppressWarnings("unchecked")    public static void outputJsonResponse(HttpServletResponse response,boolean result){    JSONObject json = new JSONObject();        json.put("result", result);        String content=json.toString();        flushResponse(response,content);    }    /*     * {"result":true,"msg":"abc"}     */    @SuppressWarnings("unchecked")    public static void outputJsonResponse(HttpServletResponse response,boolean result,String message){    JSONObject json = new JSONObject();        json.put("result", result);        json.put("message", message);        String content=json.toString();        flushResponse(response,content);    }    @SuppressWarnings("unchecked")    public static void outputJsonResponse(HttpServletResponse response,boolean result,String message,String userData){    JSONObject json = new JSONObject();        json.put("result", result);        json.put("message", message);        json.put("userData", userData);        String content=json.toString();        flushResponse(response,content);    }    /*     * {"result":true,"data":{"key1":"value1","key2":"value2"}}     */    @SuppressWarnings("unchecked")    public static void outputJsonResponse(HttpServletResponse response,boolean result,String message,Map userData){    JSONObject json = new JSONObject();        json.put("result", result);        json.put("message", message);        if(userData!=null && userData.size()>0)            json.put("userData", userData);        String content=json.toString();        flushResponse(response,content);    }        /*     * 输出json数据     * 输出格式为:{result:true,data:[{"name":"name1","id":"id1"},{"name":"name2","id":"id2"}]}     */    public static void outputJsonResponse(HttpServletResponse response,boolean result,List list) {    JSONObject json = new JSONObject();    json.put("result", result);        if (list!=null && list.size()>0){            JSONArray jsonArray = JSONArray.fromObject(list);            json.put("data", jsonArray);        }        String content=json.toString();        flushResponse(response,content);    }           /*     * 输出ext列表的json数据     * 输出格式为:{totalProperty:12,root:[{"name":"name1","id":"id1"},{"name":"name2","id":"id2"}]}     */    public static void outputJsonDataForExt(HttpServletResponse response,int totalProperty,List list) {    JSONObject json = new JSONObject();        json.put("totalProperty", totalProperty);        if (list!=null && list.size()>0){            JSONArray jsonArray = JSONArray.fromObject(list);            json.put("root", jsonArray);        }        String content=json.toString();        flushResponse(response,content);    }    /**     * Method to flush a String as response.     * @param response     * @param responseContent     * @throws IOException     */    public static void flushResponse(HttpServletResponse response,String responseContent){    response.setCharacterEncoding("UTF-8");try {PrintWriter writer = response.getWriter();writer.write(responseContent);        writer.flush();        writer.close();} catch (IOException e) {log.error(e.getMessage());}    }    /**     * @param response     */    public static void outputXML(HttpServletResponse response, String xml) throws Exception {        response.setContentType("text/xml; charset=UTF-8");        PrintWriter out = response.getWriter();        out.write(xml);        out.flush();    }        /*     * 属性拷贝     */    public void copyProperties(Object dest, Object orig) {try {BeanUtils.copyProperties(dest, orig);} catch (Exception ex) {log.error("Copy property error: " + ex.toString());}}}



转自:http://sdfiyon.iteye.com/blog/1197519









原创粉丝点击