package org.howsun.json;
import java.io.IOException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.type.TypeReference;
/**
* JSON接口
*
* @author howsun(howsun.zhang@google.com)
* @version 1.0.0
*/
public interface Json {
/**
* 如果JSON字符串为Null或"null"字符串,返回Null.<br>
* 如果JSON字符串为"[]",返回空集合.
* <p>
* 如需读取集合如List/Map,且不是List<String>这种简单类型时使用如下语句:<br>
* List<MyBean> beanList = binder.getMapper().readValue(listString, new TypeReference<List<MyBean>>() {});
*
* @param <T>
* @param jsonString
* @param clazz
* @return
*/
public abstract <T> T fromJson(String jsonString, Class<T> clazz);
public abstract <T> T fromJson(String jsonString, TypeReference<T> type) throws JsonParseException, JsonMappingException, IOException;
/**
* 如果对象为Null,返回"null".<br>
* 如果集合为空集合,返回"[]".
* @param object
* @return
*/
public abstract String toJson(Object object);
/**
* 设置转换日期类型的format pattern,如果不设置默认打印Timestamp毫秒数.
* @param pattern
*/
public abstract void setDateFormat(String pattern);
/**
* 取出Mapper做进一步的设置或使用其他序列化API.
* @return ObjectMapper
*/
public abstract Object getMapper();
}