json字符串與Object、List、Map的互轉工具類

jopen 9年前發布 | 10K 次閱讀 Java

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.util.List;
import java.util.Map;

import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
import org.codehaus.jackson.map.annotate.JsonSerialize;

import com.alibaba.fastjson.JSONArray;

/**

  • Json工具類,實現JSON與Java Bean的互相轉換
  • User: shijing
  • <span style="font-family: Arial, Helvetica, sans-serif;">2015年4月3日上午10:42:19</span> */

public class JsonUtils {

private static ObjectMapper objectMapper = new ObjectMapper();  
private static JsonFactory jsonFactory = new JsonFactory();  

static {  
    objectMapper.configure(SerializationConfig.Feature.WRITE_NULL_MAP_VALUES, false);  
    objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);  
}  

/** 
 * 泛型返回,json字符串轉對象 
 * 2015年4月3日上午10:42:19 
 * auther:shijing 
 * @param jsonAsString 
 * @param pojoClass 
 * @return 
 * @throws JsonMappingException 
 * @throws JsonParseException 
 * @throws IOException 
 */  
public static <T> T fromJson(String jsonAsString, Class<T> pojoClass) throws JsonMappingException,  
        JsonParseException, IOException {  
    return objectMapper.readValue(jsonAsString, pojoClass);  
}  

public static <T> T fromJson(FileReader fr, Class<T> pojoClass) throws JsonParseException, IOException {  
    return objectMapper.readValue(fr, pojoClass);  
}  

/** 
 * Object對象轉json 
 * 2015年4月3日上午10:41:53 
 * auther:shijing 
 * @param pojo 
 * @return 
 * @throws JsonMappingException 
 * @throws JsonGenerationException 
 * @throws IOException 
 */  
public static String toJson(Object pojo) throws JsonMappingException, JsonGenerationException, IOException {  
    return toJson(pojo, false);  
}  

public static String toJson(Object pojo, boolean prettyPrint) throws JsonMappingException, JsonGenerationException,  
        IOException {  
    StringWriter sw = new StringWriter();  
    JsonGenerator jg = jsonFactory.createJsonGenerator(sw);  
    if (prettyPrint) {  
        jg.useDefaultPrettyPrinter();  
    }  
    objectMapper.writeValue(jg, pojo);  
    return sw.toString();  
}  

public static void toJson(Object pojo, FileWriter fw, boolean prettyPrint) throws JsonMappingException,  
        JsonGenerationException, IOException {  
    JsonGenerator jg = jsonFactory.createJsonGenerator(fw);  
    if (prettyPrint) {  
        jg.useDefaultPrettyPrinter();  
    }  
    objectMapper.writeValue(jg, pojo);  
}  

/** 
 * json字符串轉Map 
 * 2015年4月3日上午10:41:25 
 * auther:shijing 
 * @param jsonStr 
 * @return 
 * @throws IOException 
 */  
public static Map<String, Object> parseMap(String jsonStr) throws IOException {  
    Map<String, Object> map = objectMapper.readValue(jsonStr, Map.class);  
    return map;  
}  

public static JsonNode parse(String jsonStr) throws IOException {  
    JsonNode node = null;  
    node = objectMapper.readTree(jsonStr);  
    return node;  
}  

public static ObjectMapper getObjectMapper() {  
    return objectMapper;  
}  

/** 
 * json字符串轉 List對象 
 * 2015年4月2日上午10:22:20 
 * auther:shijing 
 * @param str   json字符串 
 * @param clazz 轉換的類型 
 * @return 
 */  
public static <T> List<T> fromListJson(String str,Class<T> clazz){  
    return JSONArray.parseArray(str, clazz);  
}  

} </pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!