Jackson反序列化的實現方法

jackson反序列化主要有兩種情況,一種是單對象反序列化,另一種是多對象、複雜對象(集合等)反序列化,具體如下:

一、單對象序列化

LatConfig latConfigObject = JacksonUtil.readValue(latConfig, LatConfig.class);


二、多對象、複雜對象(集合等)

List<EnumConfig> enumConfigs = JacksonUtil.readValue(enumConfig, new TypeReference<List<EnumConfig>>(){});


上面的latConfig,和emumConfig 是對應對象的json字符串

這裏調用的readValue方法是對Jackson方法進行封裝過後工具類裏面的方法,工具類代碼如下:

package com.lcma.zhbs.common.util;

import org.apache.log4j.Logger;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
  
/**
 * <p>Title : 工具類</p>
 * <p>Description: json字符與對像轉換</p>
 * <p>Copyright : Copyright (c) 2016</p>
 * <p>Company : company</p>
 * @author : lcma
 * @version : 1.0
 */
public final class JacksonUtil {  
	
	private JacksonUtil(){
		
	}

    /**
     * log 記錄日誌
     */
    private static final Logger LOGGER = Logger.getLogger(JacksonUtil.class);
    
    /**
     * ObjectMapper 對象轉換器
     */
    public static  ObjectMapper objectMapper;  
  
    /** 
     * 使用泛型方法,把json字符串轉換爲相應的JavaBean對象。 
     * (1)轉換爲普通JavaBean:readValue(json,Student.class) 
     * (2)轉換爲List,如List<Student>,將第二個參數傳遞爲Student 
     * [].class.然後使用Arrays.asList();方法把得到的數組轉換爲特定類型的List 
     *  
     * @param jsonStr 
     * @param valueType 
     * @return 
     */  
    public static <T> T readValue(String jsonStr, Class<T> valueType) {  
        if (objectMapper == null) {  
            objectMapper = new ObjectMapper();  
        }  
  
        try {  
            return objectMapper.readValue(jsonStr, valueType);  
        } catch (Exception e) {  
            LOGGER.error(e);
        }  
  
        return null;  
    }  
      
    /** 
     * json數組轉List 
     * @param jsonStr 
     * @param valueTypeRef 
     * @return 
     */  
    public static <T> T readValue(String jsonStr, TypeReference<T> valueTypeRef){  
        if (objectMapper == null) {  
            objectMapper = new ObjectMapper();  
        }  
  
        try {  
            return objectMapper.readValue(jsonStr, valueTypeRef);  
        } catch (Exception e) {  
            LOGGER.error(e);
        }  
  
        return null;  
    }  
  
    /** 
     * 把JavaBean轉換爲json字符串 
     *  
     * @param object 
     * @return 
     */  
    public static String toJSon(Object object) {  
        if (objectMapper == null) {  
            objectMapper = new ObjectMapper();  
        }  
  
        try {  
            return objectMapper.writeValueAsString(object);  
        } catch (Exception e) {  
            LOGGER.error(e);
        }  
  
        return null;  
    }  
  
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章