Json工具类--使用Gson实现了Json的序列化和反序列化
来源:互联网 发布:学历网络教育费用 编辑:程序博客网 时间:2024/06/05 04:08
简介:使用Gson实现了Json的序列化和反序列化!
1.工具类代码:
import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.google.gson.annotations.Expose;import com.google.gson.annotations.SerializedName;import com.google.gson.reflect.TypeToken;import java.io.Serializable;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * Created by admin on 2017/9/28. * 使用Gson实现了Json的序列化和反序列化 */public class TestGson { private static final Gson GSON = new Gson(); private static final Gson gson = new GsonBuilder() //序列化null,为null的字段也打印出来 .serializeNulls() // 设置日期时间格式,另有2个重载方法 // 在序列化和反序化时均生效 .setDateFormat("yyyy-MM-dd HH:mm:ss") // 禁此序列化内部类 //.disableInnerClassSerialization() //生成不可执行的Json(多了 )]}' 这4个字符) //.generateNonExecutableJson() //禁止转义html标签 //.disableHtmlEscaping() //格式化输出 //.setPrettyPrinting() //配合@Expose注解使用,用于设置该字段是否需要序列化和反序列化 //.excludeFieldsWithoutExposeAnnotation() .create(); public static void main(String[] args) { Person person = new Person(); person.setName("abc"); person.setAge(18); person.setBirthday(new Date()); String s1 = toJson(person); System.out.println(s1); System.out.println("-----------------------"); String toJson = toJson(person); System.out.println(toJson); System.out.println("-----------------------"); Person p1 = fromJson(toJson, Person.class); System.out.println(p1); System.out.println("-----------------------"); Person p2 = fromJson(toJson, new TypeToken<Person>() {}.getType()); System.out.println(p2); System.out.println("-----------------------"); List<Person> list = new ArrayList<>(); list.add(p1); list.add(p2); list.add(person); String listToJson = toJson(list); ArrayList<Person> personList = readValuesAsArrayList(listToJson, new TypeToken<List<Person>>() {}.getType()); System.out.println(personList); } /** * 将Json串反序列化为ArrayList集合 * @param json * @param t * @param <T> * @return */ public static <T> ArrayList<T> readValuesAsArrayList(String json, Type t) { try { return gson.fromJson(json, t); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 将对象序列化为Json串 * @param obj * @return */ public static String toJson(Object obj){ try { return gson.toJson(obj); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 将Json串反序列化成对象 * @param json * @param clazz * @param <T> * @return */ public static <T> T fromJson(String json, Class<T> clazz){ try { return gson.fromJson(json, clazz); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 将Json串反序列化成对象 * @param json * @param type * @param <T> * @return */ public static <T> T fromJson(String json, Type type){ try { return gson.fromJson(json, type); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 测试使用实体类Person */ public static class Person implements Serializable { @Expose(deserialize = true,serialize = true) private String name; /** * 用于设置该字段是否需要序列化和反序列化。 * @Expose(deserialize = true,serialize = true) //序列化和反序列化都生效 * @Expose(deserialize = true,serialize = false) //反序列化时生效 * @Expose(deserialize = false,serialize = true) //序列化时生效 * @Expose(deserialize = false,serialize = false) //序列化和反序列化都不生效,即默认。 * 注意: * 必须设置Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); * 否则注解@Expose不生效。 */ @Expose(deserialize = true,serialize = true) private Integer age; /** * SerializedName的value属性,用于将birthday字段序列化时的key值 * alternate属性是一个数组,当反序列化时,可以识别任意一个名称与该属性对应 */ @SerializedName(value = "Birthday", alternate = {"birthday", "birthdate"}) @Expose(deserialize = true,serialize = true) private Date birthday; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", birthday=" + birthday + '}'; } }}
阅读全文
0 0
- Json工具类--使用Gson实现了Json的序列化和反序列化
- Json工具类--使用json-lib实现json的序列化和反序列化
- Json工具类--使用2.x版本的Jackson实现了Json的序列化和反序列化
- Json工具类--使用1.x版本Jackson实现json的序列化和反序列化
- 超棒的Gson库 - 实现json的序列化和反序列化
- 个人google-gson使用总结,JSON的序列化和反序列化
- Gson - Java-JSON 序列化和反序列化入门
- Gson - Java-JSON 序列化和反序列化入门
- Gson教程一(译):Java-JSON的序列化和反序列化
- 使用json-lib完成json的序列化和反序列化
- 使用json-lib完成json的序列化和反序列化
- ASP.NET:使用Newtonsoft.Json序列化和反序列化JSON对象的例子
- Json序列化和反序列化
- json序列化和反序列化
- json序列化和反序列化
- json序列化和反序列化
- json序列化和反序列化
- Json序列化和反序列化
- STL_pair
- tomcat+nginx+redis实现均衡负载、session共享
- JAVA实现创建Excel表并导出
- EXE反编译方法及工具
- 《深入理解-快速排序》
- Json工具类--使用Gson实现了Json的序列化和反序列化
- jsp隐藏表单域实现会话跟踪
- ERROR in Error encountered resolving symbol values statically. Reference to a non-exported class Log
- Python3 字符串
- XDOJ 1213
- opencv学习笔记三
- Photoshop CC 2017 For Mac安装教程
- spring 整合 jbpm
- 如何编译Hadoop-Eclipse插件