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)); } }
相关文章推荐
- 引用类型1——JS学习笔记2015-6-23(第64天)
- JavaScript面对国际化编程时的一些建议
- JavaScript中的Promise使用详解
- js实现跨域的方法实例详解
- 对JavaScript客户端应用编程的一些建议
- js实现a标签超链接提交form表单的方法
- 介绍JavaScript的一个微型模版
- js实现延迟加载的方法
- 详解JavaScript的策略模式编程
- 浅谈关于JavaScript API设计的一些建议和准则
- 详解JavaScript中的客户端消息框架设计原理
- 深入理解JavaScript编程中的同步与异步机制
- 举例详解JavaScript中Promise的使用
- 介绍一个简单的JavaScript类框架
- js实现大转盘抽奖游戏实例
- js实现的倒计时按钮实例
- Javascript常用小技巧汇总
- 对JavaScript的全文搜索实现相关度评分的功能的方法
- JavaScript常见小问题
- json前台后台解析和拼接使用