有时候我们不需要把实体的所有属性都导出,只想把一部分属性导出为Json.

有时候我们的实体类会随着版本的升级而修改.

有时候我们想对输出的json默认排好格式.

... ...

请看下面的例子吧:

实体类:

import java.util.Date;import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;public class Student {private int id;@Exposeprivate 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;}@Overridepublic 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转为jsonString s1 = gson.toJson(student1);System.out.println("简单Bean转化为Json===" + s1);// json转为简单BeanStudent 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转化为jsonString s2 = gson.toJson(list);System.out.println("带泛型的list转化为json==" + s2);// json转为带泛型的listList<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之实例一-简单对象转化和带泛型的List转化 (http://blog.csdn.net/lk_blog/article/details/7685169)
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之实例四-Map处理(下) (http://blog.csdn.net/lk_blog/article/details/7685224)
Json转换利器Gson之实例五-实际开发中的特殊需求处理 (http://blog.csdn.net/lk_blog/article/details/7685237)
Json转换利器Gson之实例六-注册TypeAdapter及处理Enum类型 (http://blog.csdn.net/lk_blog/article/details/7685347)

实例代码下载: http://download.csdn.net/detail/lk_blog/4387822

Json转换利器Gson之实例二-Gson注解和GsonBuilder相关推荐

  1. Json转换利器Gson之实例一-简单对象转化和带泛型的List转化

    Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. jar和源码下载地址: h ...

  2. Json转换利器Gson之实例四-Map处理(下)

    Map的存储结构式Key/Value形式,Key 和 Value可以是普通类型,也可以是自己写的JavaBean(上一篇博客),还可以是带有泛型的List(本文).本例中您要重点看如何将Json转回为 ...

  3. Json转换利器Gson之实例五-实际开发中的特殊需求处理

    前面四篇博客基本上可以满足我们处理的绝大多数需求,但有时项目中对json有特殊的格式规定.比如下面的json串解析: [{"tableName":"students&qu ...

  4. Android之Json转换利器Gson之实例一-简单对象转化和带泛型的List转化

    看代码可以最快速学习 实体类 public class Student {private int id;private String name;private Date birthDay;public ...

  5. Json转换利器Gson-Gson注解和GsonBuilder

    1实体的一部分属性导出为Json 2实体类会根据版本的升级而修改 3对输出的json默认排好格式 import java.util.Date; import com.google.gson.annot ...

  6. java中json转换成string类型_java中String转换成json,json转换成String

    前置添加pom com.google.code.gson gson 2.2.4 1.json转换成String import com.google.gson.Gson; import com.goog ...

  7. 实例:Gson解析泛型对象

    一,前期基础知识储备 1)Java泛型 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质 ...

  8. 各个JSON技术的比较(Jackson,Gson,Fastjson)的对比

    JSON技术的调研报告 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包, 包括 ...

  9. Android系统 (190)---Android:JSON 简介 amp; 解析方式 讲解(Gson、AS自带org.json、Jackson)

    Android:JSON 简介 & 解析方式 讲解(Gson.AS自带org.json.Jackson) 前言 现今最主流的数据交换格式 非 JSON莫属 今天,我将全面介绍 JSON &am ...

最新文章

  1. 五年之后,你的企业是拥抱AI,还是已被淘汰
  2. java执行顺序_java执行顺序
  3. django博客项目8:文章详情页
  4. Linux运维之常见命令
  5. 如何快速过滤出一次请求的所有日志?
  6. Wordpress上传图片的存储逻辑
  7. Vmware报错:此主机支持IntelVTx 但IntelVTx处于禁用状态
  8. 3、线性表的顺序存储结构(顺序表)
  9. Photoshop CS6 在 4k屏上非常小的解决办法
  10. 2 一个完整的计算机系统包括,一个完整的计算机系统应包括.doc
  11. 积累小结-无法将文件”obj\debug\XXX.dll复制到“bin\Debug\XXX.dll” 拒绝访问
  12. mysql mac 规则_MAC MYSQL使用问题记录
  13. android webview打开相册,Android webView不能响应h5打开相册的操作
  14. 大学计算机作业互评评语简短,大学生互评评语简短
  15. 《SAAS 架构设计》读后感
  16. 002.2-地下管线转3dtiles工具
  17. 如何编程访问(读,写)Revit项目信息
  18. Android程序员:如何成为一个更好的Android开发者?经典好文
  19. 【PKI技术】第二弹 — PKI在电信运营商的应用
  20. Android中双击、三击以及多击的判定

热门文章

  1. 增项劳务资质怎么办理
  2. 怎样查询自己的苹果手机各个软件的大小,占用多少内存?
  3. 记录一次 JavaScript 正则使用变量
  4. 赶集网入车行,纵向垂直看好市场
  5. 2022年年度总结 春华秋实 把握所愿
  6. 基于微信小程序的走失人员的报备案件志愿者线索平台SSM-JAVA【数据库设计、论文、毕设源码、开题报告】
  7. html如何插入avi视频,Kanavi盲僧立功,JDG险胜V5,Otto发声:格温有问题
  8. 南卡和漫步者哪款更值得入手?音质高的国产蓝牙耳机推荐
  9. Java中关于子类调用父类无参还是有参构造方法的各个类型
  10. 浏览器网页闪退原因分析