1. 程式人生 > >Java獲取後臺SQL的date格式,實體類中有java.util.Date型別的,輸入前臺的格式轉換

Java獲取後臺SQL的date格式,實體類中有java.util.Date型別的,輸入前臺的格式轉換

後臺獲取實體類物件,並將實體類物件作為json進行輸出。實體類中有java.util.Date物件

需要在前臺顯示“yyyy-MM-dd”,按照這個格式來進行。
參考:實體類有日期型別,在前端顯示指定格式
需要用到Jacksonjar包。進行物件實體轉換成json物件

package cn.edu.hbcf.common.jackjson;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Set;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.ser.FilterProvider;
import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;
import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
import org.codehaus.jackson.type.JavaType;
import org.codehaus.jackson.type.TypeReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * jackjson的一些轉換方法
 * 
 */
public class JackJson {
    private static final Logger logger = LoggerFactory.getLogger(JackJson.class);
    /** 格式化時間的string */
    private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

    /**
     * jackjson把json字串轉換為Java物件的實現方法
     * 
     * <pre>
     * return JackJson.fromJsonToObject(this.answersJson, new TypeReference&lt;List&lt;StanzaAnswer&gt;&gt;() {
     * });
     * </pre>
     * 
     * @param <T>
     *            轉換為的java物件
     * @param json
     *            json字串
     * @param typeReference
     *            jackjson自定義的型別
     * @return 返回Java物件
     */
    public static <T> T fromJsonToObject(String json, TypeReference<T> typeReference) {
        ObjectMapper mapper = new ObjectMapper();
        try {
            return (T)mapper.readValue(json, typeReference);
        } catch (JsonParseException e) {
            logger.error("JsonParseException: ", e);
        } catch (JsonMappingException e) {
            logger.error("JsonMappingException: ", e);
        } catch (IOException e) {
            logger.error("IOException: ", e);
        }
        return null;
    }

    /**
     * json轉換為java物件
     * 
     * <pre>
     * return JackJson.fromJsonToObject(this.answersJson, JackJson.class);
     * </pre>
     * 
     * @param <T>
     *            要轉換的物件
     * @param json
     *            字串
     * @param valueType
     *            物件的class
     * @return 返回物件
     */
    public static <T> T fromJsonToObject(String json, Class<T> valueType) {
        ObjectMapper mapper = new ObjectMapper();
        try {
            return (T)mapper.readValue(json, valueType);
        } catch (JsonParseException e) {
            logger.error("JsonParseException: ", e);
        } catch (JsonMappingException e) {
            logger.error("JsonMappingException: ", e);
        } catch (IOException e) {
            logger.error("IOException: ", e);
        }
        return null;
    }

    /**
     * java物件轉換為json字串
     * 
     * @param object
     *            Java物件
     * @return 返回字串
     */
    public static String fromObjectToJson(Object object) {
        ObjectMapper mapper = new ObjectMapper();
        try {
            return mapper.writeValueAsString(object);
        } catch (JsonGenerationException e) {
            logger.error("JsonGenerationException: ", e);
        } catch (JsonMappingException e) {
            logger.error("JsonMappingException: ", e);
        } catch (IOException e) {
            logger.error("IOException: ", e);
        }
        return null;
    }

    /**
     * java物件轉換為json字串
     * 
     * @param object
     *            要轉換的物件
     * @param filterName
     *            過濾器的名稱
     * @param properties
     *            要過濾哪些欄位
     * @return
     */
    @SuppressWarnings("deprecation")
    public static String fromObjectToJson(Object object, String filterName, Set<String> properties) {
        ObjectMapper mapper = new ObjectMapper();
        FilterProvider filters = new SimpleFilterProvider().addFilter(filterName, SimpleBeanPropertyFilter.serializeAllExcept(properties));
        try {
            return mapper.filteredWriter(filters).writeValueAsString(object);
        } catch (JsonGenerationException e) {
            logger.error("JsonGenerationException: ", e);
        } catch (JsonMappingException e) {
            logger.error("JsonMappingException: ", e);
        } catch (IOException e) {
            logger.error("IOException: ", e);
        }
        return null;
    }

    /**
     * java物件轉換為json字串
     * 
     * @param object
     *            要轉換的物件
     * @param filterName
     *            過濾器的名稱
     * @param properties
     *            要過濾的欄位名稱
     * @return
     */
    @SuppressWarnings("deprecation")
    public static String fromObjectToJson(Object object, String filterName, String property) {
        ObjectMapper mapper = new ObjectMapper();
        FilterProvider filters = new SimpleFilterProvider().addFilter(filterName, SimpleBeanPropertyFilter.serializeAllExcept(property));
        try {
            return mapper.filteredWriter(filters).writeValueAsString(object);
        } catch (JsonGenerationException e) {
            logger.error("JsonGenerationException: ", e);
        } catch (JsonMappingException e) {
            logger.error("JsonMappingException: ", e);
        } catch (IOException e) {
            logger.error("IOException: ", e);
        }
        return null;
    }

    /**
     * java物件(包含日期欄位或屬性)轉換為json字串
     * 
     * @param object
     *            Java物件
     * @return 返回字串
     */
    public static String fromObjectHasDateToJson(Object object) {
        ObjectMapper mapper = new ObjectMapper();
        mapper.getSerializationConfig().withDateFormat(new SimpleDateFormat(DATE_TIME_FORMAT));
        try {
            return mapper.writeValueAsString(object);
        } catch (JsonGenerationException e) {
            logger.error("JsonGenerationException: ", e);
        } catch (JsonMappingException e) {
            logger.error("JsonMappingException: ", e);
        } catch (IOException e) {
            logger.error("IOException: ", e);
        }
        return null;
    }

    /**
     * java物件(包含日期欄位或屬性)轉換為json字串
     * 
     * @param object
     *            Java物件
     * @param dateTimeFormatString
     *            自定義的日期/時間格式。該屬性的值遵循java標準的date/time格式規範。如:yyyy-MM-dd
     * @return 返回字串
     */
    public static String fromObjectHasDateToJson(Object object, String dateTimeFormatString) {
        ObjectMapper mapper = new ObjectMapper();
        mapper.getSerializationConfig().withDateFormat(new SimpleDateFormat(dateTimeFormatString));
        try {
            return mapper.writeValueAsString(object);
        } catch (JsonGenerationException e) {
            logger.error("JsonGenerationException: ", e);
        } catch (JsonMappingException e) {
            logger.error("JsonMappingException: ", e);
        } catch (IOException e) {
            logger.error("IOException: ", e);
        }
        return null;
    }
    public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
        ObjectMapper mapper = new ObjectMapper();
         return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);   
    }
}

用Jackson的註解@JsonFormat