package detective.common.json; import java.text.SimpleDateFormat; import java.util.HashMap; import java.util.Map; import java.util.TimeZone; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.SerializationConfig.Feature; import org.codehaus.jackson.type.TypeReference; public class JacksonMsgConverter extends ObjectMapper { private static final String FULLTIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; public JacksonMsgConverter() { this(true); } public JacksonMsgConverter(boolean failOnUnknowProperties) { configure(org.codehaus.jackson.map.DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, failOnUnknowProperties); configure(Feature.WRITE_DATES_AS_TIMESTAMPS, false); SimpleDateFormat format = new SimpleDateFormat(FULLTIME_FORMAT); format.setTimeZone(TimeZone.getTimeZone("UTC")); setDateFormat(format); } public String toJson(Object obj) { try { return writeValueAsString(obj); } catch (Exception e) { throw new RuntimeException(e); } } public <T> T fromJson(String json, Class<T> valueType) { try { return this.readValue(json, valueType); } catch (Exception e) { throw new RuntimeException(e); } } public Map<String, Object> fromJsonToMap(String json) { try { return this.readValue(json, new TypeReference<HashMap<String, Object>>() { }); } catch (Exception e) { throw new RuntimeException(e); } } }