package com.ssm.utils;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
/**
* JSON转换工具类
*@autho 董杨炀
*@time 2017-4-10 下午3:46:02
*/
public class JsonConverUtils {
/**
*
Bean对象转JSON.采用Jackson工具
*
如果有时间日期格式需要转换,请传入时间日期格式。建议"yyyy-MM-dd HH:mm:ss"。当dataFormatString==null或者""时,对日期时间不做处理,解析时请保持一致
*@param object
*@param dataFormatString
*@return
*@throws IOException
*@throws JsonMappingException
*@throws JsonGenerationException
*@autho 董杨炀
*@time 2017-4-10 下午4:00:09
*/
public static String beanToJsonByJackson(Object object,String dataFormatString) throws JsonGenerationException, JsonMappingException, IOException{
if(object != null){
ObjectMapper mapper = new ObjectMapper();
if(StringUtils.isNotBlank(dataFormatString)){
mapper.setDateFormat(new SimpleDateFormat(dataFormatString));
}
return mapper.writeValueAsString(object);
}else{
return null;
}
}
/**
*
Bean对象转JSON.采用Fastjson工具
*
当dataFormatString==null或者""时,对日期时间不做处理。建议"yyyy-MM-dd HH:mm:ss"。
*@param object
*@param dataFormatString
*@return
*@autho 董杨炀
*@time 2017-4-10 下午4:00:09
*/
public static String beanToJsonByFastjson(Object object,String dataFormatString){
if(object != null){
if(StringUtils.isBlank(dataFormatString)){
return JSONObject.toJSONString(object);
}
return JSON.toJSONStringWithDateFormat(object,dataFormatString);
}else{
return null;
}
}
/**
*
String转JSON字符串.采用Jackson工具
*
key value都是必传值,否则返回null
*@param key 变量名
*@param value string值
*@return
*@throws IOException
*@throws JsonMappingException
*@throws JsonGenerationException
*@autho 董杨炀
*@time 2017-4-10 下午4:10:06
*/
public static String stringToJsonByJackson(String key,String value) throws JsonGenerationException, JsonMappingException, IOException{
if(StringUtils.isBlank(key) || StringUtils.isBlank(value)){
return null;
}
Map map = new HashMap();
map.put(key, value);
return beanToJsonByJackson(map,null);
}
/**
*
String转JSON字符串.采用Fastjson工具
*
key value都是必传值,否则返回null
*@param key 变量名
*@param value string值
*@return
*@autho 董杨炀
*@time 2017-4-10 下午4:10:06
*/
public static String stringToJsonByFastjson(String key,String value){
if(StringUtils.isBlank(key) || StringUtils.isBlank(value)){
return null;
}
Map map = new HashMap();
map.put(key, value);
return beanToJsonByFastjson(map,null);
}
/**
*
将json字符串转换成对象.采用Jackson工具.具有时间格式转换
*
当dataFormatString==null或者""时,对日期时间不做处理,解析时请保持一致。建议"yyyy-MM-dd HH:mm:ss"
*@param json json字符串
*@param clazz 源对象
*@param dataFormatString 日期时间格式必传
*@return
*@throws IOException
*@throws JsonMappingException
*@throws JsonParseException
*@autho 董杨炀
*@time 2017-4-10 下午4:20:50
*/
public static Object jsonToBeanByJackson(String json,Object clazz,String dataFormatString) throws JsonParseException, JsonMappingException, IOException{
if(StringUtils.isBlank(json) || clazz == null){
return null;
}
ObjectMapper mapper = new ObjectMapper();
if(StringUtils.isNotBlank(dataFormatString)){
mapper.setDateFormat(new SimpleDateFormat(dataFormatString));
}
return mapper.readValue(json, clazz.getClass());
}
/**
*
将json字符串转换成对象.采用Fastjson工具---自动识别日期时间类型转换
*@param json json字符串
*@param clazz 源对象
*@return
*@autho 董杨炀
*@time 2017-4-10 下午4:20:50
*/
public static Object jsonToBeanByFastjson(String json,Object clazz){
if(StringUtils.isBlank(json) || clazz == null){
return null;
}
return JSON.parseObject(json, clazz.getClass());
}
// public static void main(String[] args) {
// //时间不转换就是long值
// EmployeeEntity entity = new EmployeeEntity();
// entity.setDate(new Date());
// System.out.println(beanToJsonByJackson(entity,"yyyy-MM-dd HH:mm:ss"));
// String json = "{\"name\":null,\"sex\":0,\"idCard\":null,\"salary\":0.0,\"date\":\"2017-04-12 08:40:36\"}";
EmployeeEntity entity2 = (EmployeeEntity)jsonToBeanByJackson(json, new EmployeeEntity(),"yyyy-MM-dd HH:mm:ss");
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(entity2.getDate()));
//
// EmployeeEntity entity3 = (EmployeeEntity)jsonToBeanByJackson(json, new EmployeeEntity(),"yyyy-MM-dd HH:mm:ss");
// System.out.println(entity3.getDate());
//
// System.out.println("--------------------------------");
// System.out.println(beanToJsonByFastjson(entity,"yyyy-MM-dd HH:mm:ss"));
// String json2 = "{\"date\":\"2017-04-12 08:42:02\",\"salary\":0,\"sex\":0}";
// EmployeeEntity entity4 = (EmployeeEntity)jsonToBeanByFastjson(json2, new EmployeeEntity());
// System.out.println(entity4.getDate());
// //new Date
// System.out.println(new Date());
// }
}