今天碰到了java对象和JSON之间的转换,选择了Jackson,Jackson对于json的转换有很多好的方法,我写了下面的两个工具方法
1,对象转换成json 里面处理了时间转换的问题(Jackson,默认把时间类型的转换成一个Long类型的值,加上下面处理后就可以自定义转换的格式)
/**
* 处理带日期的类成json 也可以参考(http://wiki.fasterxml.com/JacksonFeatureModules)
* @param json
* @param formater(日期的格式 如 yyyy-MM-dd HH:ss:mm)
* @return
*/
public static String toString(Object json,String formater){
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat(formater));
StringWriter sw = new StringWriter();
try {
JsonGenerator generator = objectMapper.getJsonFactory().createJsonGenerator(sw);
generator.writeObject(json);
generator.close();
} catch (Exception e) {
logger.warn(e.getMessage());
e.printStackTrace();
}
return sw.toString();
}
2,把json转换成对象
public static <T>T getInstance(String jsonStr,Class<T> c){//从字符json对象获得对象实例
try {
T t = c.newInstance();
ObjectMapper objectMapper = new ObjectMapper();
t = objectMapper.readValue(jsonStr, c);
return t;
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (JsonParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}