您的位置:首页 > Web前端 > JavaScript

Gson 进行 json 数据的相关的操作

2015-06-24 00:13 656 查看
基于Gson的工具类:

/**
*
* @author Kenny-Tang
*
*/
public class JSONTool{
private JSONTool(){}

/**
* 将对象转化成json串。
* @param obj
* @return
*/
public static String toJson(Object obj){
Gson gson = getGsonInstance(false, null);
return gson.toJson(obj);
}

/**
* 将json转换为对象。
* @param classOfT
* @param json
* @return
*/
public static <T> T fromJson(String json, Class<T> classOfT){
Gson gson = getGsonInstance(false, null);
return gson.fromJson(json, classOfT);
}

/**
* 将对象转换为json串。
* @param obj
* @param serializeNulls 是否对空值进行序列化
* @param dateFormatPattern 日期序列化格式,如果为null则使用  "yyyy-MM-dd"。
* @return
*/
public static String toJson(Object obj, boolean serializeNulls, String dateFormatPattern){
Gson gson = getGsonInstance(serializeNulls, dateFormatPattern);
return gson.toJson(obj);
}

/**
* Gson 默认对于空值的属性,在转换成json对象的时候是不进行序列化的,只有显示的声明对空值进行序列化的时候才会对空值属性进行处理。<br />
*
* @param serializeNulls 是否对空值属性
* @param dateFormatPattern 对于日期的序列化格式
* @return
*/
public static Gson getGsonInstance(boolean serializeNulls, String dateFormatPattern){
GsonBuilder builder = new GsonBuilder();

if(serializeNulls) builder.serializeNulls() ;

if(dateFormatPattern == null || "".equals(dateFormatPattern)){
dateFormatPattern = "yyyy-MM-dd";
}
builder.setDateFormat(dateFormatPattern);

return builder.create() ;
}

/**
* 指定日期序列化格式。
* @param dateFormatPattern
* @return
*/
public static Gson getGsonInstance(String dateFormatPattern){
return getGsonInstance(false , dateFormatPattern);
}

/**
* 获取默认对空值属性进行序列化,日期序列化格式为 "yyyy-MM-dd" 的{@linkplain Gson}对象。
* @return
*/
public static Gson getGsonInstance(){
return getGsonInstance(false , null);
}

/**
* Gson 默认对于空值的属性,在转换成json对象的时候是不进行序列化的,只有显示的声明对空值进行序列化的时候才会对空值属性进行处理。<br />
* @param serializeNulls 是否对空值属性
* @param dateFormatPattern 对于日期的序列化格式
* @return
*/
public static GsonBuilder getGsonBuilderInstance(boolean serializeNulls, String dateFormatPattern){
GsonBuilder builder = new GsonBuilder();

if(serializeNulls) builder.serializeNulls() ;

if(dateFormatPattern == null || "".equals(dateFormatPattern)){
dateFormatPattern = "yyyy-MM-dd";
}
builder.setDateFormat(dateFormatPattern);

return builder ;
}

}


单元测试类:

public class JSONToolTest extends TestCase{
private static Logger logger = LoggerFactory.getLogger(JSONToolTest.class.getName());

public void testFromJson(){
Date birthday = new Date();
String jsonString = "{\"id\":12,\"name\":\"张三\",\"age\":21,\"gender\":\"M\",\"birthday\":\""+new SimpleDateFormat("yyyy-MM-dd").format(birthday)+"\"}" ;
Person jsonPerson = JSONTool.fromJson(jsonString, Person.class) ;
logger.debug("person info : {}" , jsonPerson);
Person person = new Person();
person.setAge(21);
person.setGender(Person.MALE);
person.setId(12l);
person.setName("张三");
person.setBirthday(birthday);
assertTrue(person.getId().equals(jsonPerson.getId()));
assertTrue(person.getGender().equals(jsonPerson.getGender()));
assertTrue(person.getName().equals(jsonPerson.getName()));
}

public void testToJson(){
Date birthday = new Date();
String jsonString = "{\"id\":12,\"name\":\"张三\",\"age\":21,\"gender\":\"M\",\"birthday\":\""+new SimpleDateFormat("yyyy-MM-dd").format(birthday)+"\"}" ;
Person person = new Person();
person.setAge(21);
person.setGender(Person.MALE);
person.setId(12l);
person.setName("张三");
person.setBirthday(birthday);
String gsonString = JSONTool.toJson(person);
logger.debug("Person to JSON is : {}",gsonString);
assertTrue(jsonString.equals(gsonString));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: