[java]代码库
package com.slb.webservice.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonToken;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
/**
* json dto转换工具类
* @author LIHAO
* 2014/05/07
*/
public class JSONUtils {
static class LazyLoad {
static JSONUtils instance = new JSONUtils();
}
public static JSONUtils getInstance() {
return LazyLoad.instance;
}
private static ObjectMapper objectMapper = new ObjectMapper();
private static Logger _logger = Logger.getLogger(JSONUtils.class);
/**
* dto 转 json
* @param obj dto 需转化对象
* @return json 字符串
* @throws IOException
* @throws JsonMappingException
* @throws JsonGenerationException
* @throws Exception
*/
public String dtoToJson(Object obj) throws JsonGenerationException, JsonMappingException, IOException {
_logger.debug("objToJson convert start...");
String json = objectMapper.writeValueAsString(obj);
_logger.debug("objToJson convert end");
return json;
}
/**
* json 转 dto
* @param cl 类
* @param json json字符串
* @return Object
* @throws IOException
* @throws JsonMappingException
* @throws JsonParseException
*/
public Object jsonToDto(Class<?> cl, String json) throws JsonParseException, JsonMappingException, IOException {
_logger.debug("jsonToDto convert start...");
Object obj = objectMapper.readValue(json, cl);
_logger.debug("jsonToDto convert end");
return obj;
}
/**
* json 转 list dto
* @param cl 类
* @param json json字符串
* @return Object的List
* @throws IOException
* @throws JsonParseException
*/
public List<Object> jsonToListDto(Class<?> cl, String json) throws JsonParseException, IOException {
if (StringUtils.isNotBlank(json)) {
List<Object> list = new ArrayList<Object>();
_logger.debug("jsonToListDto convert start...");
JsonFactory f = new JsonFactory();
JsonParser jp = f.createJsonParser(json);
jp.nextToken();
while (jp.nextToken() == JsonToken.START_OBJECT) {
Object obj = objectMapper.readValue(jp, cl);
list.add(obj);
}
_logger.debug("jsonToListDto convert end");
return list;
}
return null;
}
/**
* list json 转 dto
* @param cl 类
* @param json list json字符串, 即[]格式
* @return Object
* @throws JsonParseException
* @throws IOException
*/
public Object listJsonToDto(Class<?> cl, String json) throws JsonParseException, IOException {
if (StringUtils.isNotBlank(json)) {
_logger.debug("listJsonToDto convert start...");
JsonFactory f = new JsonFactory();
JsonParser jp = f.createJsonParser(json);
jp.nextToken();
Object obj = null;
while (jp.nextToken() == JsonToken.START_OBJECT) {
obj = objectMapper.readValue(jp, cl);
break;
}
_logger.debug("listJsonToDto convert end");
return obj;
}
return null;
}
/**
* map 转 json
* @param map map格式数据
* @return json字符串
* @throws IOException
* @throws JsonMappingException
* @throws JsonGenerationException
*/
public String mapToJson(Map<String, List<?>> map) throws JsonGenerationException, JsonMappingException, IOException {
Map<String, List<?>> pageMap = new HashMap<String, List<?>>();
_logger.debug("mapToJson convert start...");
if (map != null && !map.isEmpty()) {
for (Map.Entry<String, List<?>> entry : map.entrySet()) {
pageMap.put(entry.getKey(), entry.getValue());
}
}
_logger.debug("mapToJson convert end");
return objectMapper.writeValueAsString(pageMap);
}
}
//源代码片段来自云代码http://yuncode.net