有时候我们不需要把实体的所有属性都导出,只想把一部分属性导出为Json.
有时候我们的实体类会随着版本的升级而修改.
有时候我们想对输出的json默认排好格式.
... ...
请看下面的例子吧:
实体类:
- import java.util.Date;
- import com.google.gson.annotations.Expose;
- import com.google.gson.annotations.SerializedName;
- public class Student {
- private int id;
- @Expose
- private String name;
- @Expose
- @SerializedName("bir")
- private Date birthDay;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Date getBirthDay() {
- return birthDay;
- }
- public void setBirthDay(Date birthDay) {
- this.birthDay = birthDay;
- }
- @Override
- public String toString() {
- return "Student [birthDay=" + birthDay + ", id=" + id + ", name="
- + name + "]";
- }
- }
测试类:
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import com.google.gson.FieldNamingPolicy;
- import com.google.gson.Gson;
- import com.google.gson.GsonBuilder;
- import com.google.gson.reflect.TypeToken;
- public class GsonTest2 {
- public static void main(String[] args) {
- //注意这里的Gson的构建方式为GsonBuilder,区别于test1中的Gson gson = new Gson();
- Gson gson = new GsonBuilder()
- .excludeFieldsWithoutExposeAnnotation() //不导出实体中没有用@Expose注解的属性
- .enableComplexMapKeySerialization() //支持Map的key为复杂对象的形式
- .serializeNulls().setDateFormat("yyyy-MM-dd HH:mm:ss:SSS")//时间转化为特定格式
- .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)//会把字段首字母大写,注:对于实体上使用了@SerializedName注解的不会生效.
- .setPrettyPrinting() //对json结果格式化.
- .setVersion(1.0) //有的字段不是一开始就有的,会随着版本的升级添加进来,那么在进行序列化和返序列化的时候就会根据版本号来选择是否要序列化.
- //@Since(版本号)能完美地实现这个功能.还的字段可能,随着版本的升级而删除,那么
- //@Until(版本号)也能实现这个功能,GsonBuilder.setVersion(double)方法需要调用.
- .create();
- Student student1 = new Student();
- student1.setId(1);
- student1.setName("李坤");
- student1.setBirthDay(new Date());
- // //////////////////////////////////////////////////////////
- System.out.println("----------简单对象之间的转化-------------");
- // 简单的bean转为json
- String s1 = gson.toJson(student1);
- System.out.println("简单Bean转化为Json===" + s1);
- // json转为简单Bean
- Student student = gson.fromJson(s1, Student.class);
- System.out.println("Json转为简单Bean===" + student);
- // //////////////////////////////////////////////////////////
- Student student2 = new Student();
- student2.setId(2);
- student2.setName("曹贵生");
- student2.setBirthDay(new Date());
- Student student3 = new Student();
- student3.setId(3);
- student3.setName("柳波");
- student3.setBirthDay(new Date());
- List<Student> list = new ArrayList<Student>();
- list.add(student1);
- list.add(student2);
- list.add(student3);
- System.out.println("----------带泛型的List之间的转化-------------");
- // 带泛型的list转化为json
- String s2 = gson.toJson(list);
- System.out.println("带泛型的list转化为json==" + s2);
- // json转为带泛型的list
- List<Student> retList = gson.fromJson(s2,
- new TypeToken<List<Student>>() {
- }.getType());
- for (Student stu : retList) {
- System.out.println(stu);
- }
- }
- }
输出结果:
- ----------简单对象之间的转化-------------
- 简单Bean转化为Json==={
- "Name": "李坤",
- "bir": "2012-06-22 21:26:40:592"
- }
- Json转为简单Bean===Student [birthDay=Fri Jun 22 21:26:40 CST 2012, id=0, name=李坤]
- ----------带泛型的List之间的转化-------------
- 带泛型的list转化为json==[
- {
- "Name": "李坤",
- "bir": "2012-06-22 21:26:40:592"
- },
- {
- "Name": "曹贵生",
- "bir": "2012-06-22 21:26:40:625"
- },
- {
- "Name": "柳波",
- "bir": "2012-06-22 21:26:40:625"
- }
- ]
- Student [birthDay=Fri Jun 22 21:26:40 CST 2012, id=0, name=李坤]
- Student [birthDay=Fri Jun 22 21:26:40 CST 2012, id=0, name=曹贵生]
- Student [birthDay=Fri Jun 22 21:26:40 CST 2012, id=0, name=柳波]
相关推荐
Json转换利器Gson之实例二-Gson注解和GsonBuilder (http://blog.csdn.net/lk_blog/article/details/7685190) Json转换利器Gson之实例三-Map处理(上) (http://blog.csdn.net/lk_blog/article/details/7685210) Json...
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。 java对象或者list转换为json字符串
gson-2.10.1.jar gson-2.10.jar gson-2.9.1.jar gson-2.9.0.jar gson-2.8.9.jar gson-2.8.8.jar gson-2.8.7.jar gson-2.8.6.jar gson-2.8.5.jar gson-2.8.4.jar gson-2.8.3.jar gson-2.8.2.jar gson-2.8.1.jar gson-...
Gson-2.8.1的官方jar包合集【gson-2.8.1.jar,gson-2.8.1-sources.jar】, 包含Gson核心包和源码包。
赠送jar包:gson-2.8.0.jar; 赠送原API文档:gson-2.8.0-javadoc.jar; 赠送源代码:gson-2.8.0-sources.jar; 赠送Maven依赖信息文件:gson-2.8.0.pom; 包含翻译后的API文档:gson-2.8.0-javadoc-API文档-中文...
gson-2.3.1.jar json 转换工具
赠送jar包:gson-2.8.7.jar; 赠送原API文档:gson-2.8.7-javadoc.jar; 赠送源代码:gson-2.8.7-sources.jar; 赠送Maven依赖信息文件:gson-2.8.7.pom; 包含翻译后的API文档:gson-2.8.7-javadoc-API文档-中文...
NULL 博文链接:https://bdk82924.iteye.com/blog/1988977
Gson-2.8.0的官方jar包合集【gson-2.8.0.jar,gson-2.8.0-sources.jar,gson-2.8.0-javadoc.jar】,JSON解析类库Gson库的jar包。
Google的json数据转换的三个jar包gson-2.2.4.jar,gson-2.2.4-javadoc.jar,gson-2.2.4-sources.jar
gson-2.3.jar(含gson-2.3-javadoc.jar和gson-2.3-sources.jar)解压缩之后有3个夹包
赠送jar包:gson-2.8.5.jar; 赠送原API文档:gson-2.8.5-javadoc.jar; 赠送源代码:gson-2.8.5-sources.jar; 赠送Maven依赖信息文件:gson-2.8.5.pom; 包含翻译后的API文档:gson-2.8.5-javadoc-API文档-中文...
赠送jar包:gson-2.8.6.jar; 赠送原API文档:gson-2.8.6-javadoc.jar; 赠送源代码:gson-2.8.6-sources.jar; 赠送Maven依赖信息文件:gson-2.8.6.pom; 包含翻译后的API文档:gson-2.8.6-javadoc-API文档-中文...
解放你的双手,不用再去一个一个JSONObject去处理解析问题,两行代码搞定一切
Gson这个Java类库可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象。Gson支持任意复杂Java对象包括没有源代码的对象。
json包、gson包以及相应的源码,其中包括了json的工具类-json.jar以及gson的工具类-gson.jar,以及json-sources 和gson-sources。
赠送jar包:gson-2.6.2.jar; 赠送原API文档:gson-2.6.2-javadoc.jar; 赠送源代码:gson-2.6.2-sources.jar; 包含翻译后的API文档:gson-2.6.2-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:...
赠送jar包:gson-2.8.9.jar; 赠送原API文档:gson-2.8.9-javadoc.jar; 赠送源代码:gson-2.8.9-sources.jar; 赠送Maven依赖信息文件:gson-2.8.9.pom; 包含翻译后的API文档:gson-2.8.9-javadoc-API文档-中文...
Gson.jar gson-2.7.jar GSON jar包 gson需要的所有jar,这是自己用的,保证稳定可用,现在分享给大家啦~~~欢迎下载讨论!
java开发中使用JSON和gson所需要的jar,里面包含了所有的jar,这样我们就可以随便使用JSON和gson了