`

java利器F Json之Gson(二)

    博客分类:
  • java
 
阅读更多

1.今天继续看昨天的gson利器:

 

环境:

1.Student.java:

package com.wds.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 Student() {
		super();
	}
	public Student(int id, String name, Date birthDay) {
		super();
		this.id = id;
		this.name = name;
		this.birthDay = birthDay;
	}
	@Override
	public String toString() {
		return "Student [birthDay="+birthDay+",id="+id+",name="+name+"]";
	}
	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;
	}
}

 

2.Point.java:

package com.wds.json;

public class Point {
	private int x;
	private int y;
	
	public Point() {
		super();
	}
	public Point(int x, int y) {
		super();
		this.x = x;
		this.y = y;
	}
	
	@Override
	public String toString() {
		return "Point[x="+x+",y="+y+"]";
	}
	public int getX() {
		return x;
	}
	public void setX(int x) {
		this.x = x;
	}
	public int getY() {
		return y;
	}
	public void setY(int y) {
		this.y = y;
	}
}

 

 3.测试类:

package com.wds.json;

import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
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) {
  //第1组
  // Gson gson = new Gson();
  //第2组
  Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation() // 不导出实体中没有用@Expose注解的属性
    .serializeNulls().setDateFormat("yyyy-MM-dd HH:mm:ss:SSS")// 时间转化为特定格式
    .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)// 会把字段首字母大写,注:对于实体上使用了@SerializedName注解的不会生效.
    .setPrettyPrinting() // 对json结果格式化
    // 有的字段不是一开始就有的,会随着版本的升级添加进来,那么在进行序列化和返序列化的时候就会根据版本号来选择是否要序列化.
    // @Since(版本号)能完美地实现这个功能.还的字段可能,随着版本的升级而删除,那么
    // @Until(版本号)也能实现这个功能,GsonBuilder.setVersion(double)方法需要调用.
    .setVersion(1.0).create();
  forSimple(gson);
  forSet(gson);
 }
private static void forSet(Gson gson) {
  Student s1 = new Student();
  s1.setId(1);
  s1.setName("李坤");
  s1.setBirthDay(new Date());
  Student s2 = new Student();
  s2.setId(2);
  s2.setName("徐兵");
  s2.setBirthDay(new Date());
  Student s3 = new Student();
  s3.setId(1);
  s3.setName("沈东");
  s3.setBirthDay(new Date());
  Set<Student> ss = new HashSet<Student>();
  ss.add(s1);
  ss.add(s2);
  ss.add(s3);
  String json = gson.toJson(ss);
  System.out.println("set = > json:" + json);
  List<Student> retList = gson.fromJson(json,
    new TypeToken<List<Student>>() {
    }.getType());
  for (Student s : retList) {
   System.out.println("Student[x]:" + s);
  }
 }
private static void forSimple(Gson gson) {
  Student student1 = new Student();
  student1.setId(1);
  student1.setName("李坤");
  student1.setBirthDay(new Date());

  // 简单的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);
 }
}

 

3.第一组运行结果:

bean = > json:{"id":1,"name":"李坤","bir":"Jun 19, 2013 9:26:04 PM"}
json = > bean:Student [birthDay=Wed Jun 19 21:26:04 CST 2013,id=1,name=李坤]
set = > json:[{"id":2,"name":"徐兵","bir":"Jun 19, 2013 9:26:04 PM"},{"id":1,"name":"沈东","bir":"Jun 19, 2013 9:26:04 PM"},{"id":1,"name":"李坤","bir":"Jun 19, 2013 9:26:04 PM"}]
Student[x]:Student [birthDay=Wed Jun 19 21:26:04 CST 2013,id=2,name=徐兵]
Student[x]:Student [birthDay=Wed Jun 19 21:26:04 CST 2013,id=1,name=沈东]
Student[x]:Student [birthDay=Wed Jun 19 21:26:04 CST 2013,id=1,name=李坤]

 

第二组运行结果:

bean = > json:{
  "Name": "李坤",
  "bir": "2013-06-19 21:33:40:458"
}
json = > bean:Student [birthDay=Wed Jun 19 21:33:40 CST 2013,id=0,name=李坤]
set = > json:[
  {
    "Name": "沈东",
    "bir": "2013-06-19 21:33:40:498"
  },
  {
    "Name": "李坤",
    "bir": "2013-06-19 21:33:40:498"
  },
  {
    "Name": "徐兵",
    "bir": "2013-06-19 21:33:40:498"
  }
]
Student[x]:Student [birthDay=Wed Jun 19 21:33:40 CST 2013,id=0,name=沈东]
Student[x]:Student [birthDay=Wed Jun 19 21:33:40 CST 2013,id=0,name=李坤]
Student[x]:Student [birthDay=Wed Jun 19 21:33:40 CST 2013,id=0,name=徐兵]

 

分享到:
评论

相关推荐

    Java对象和JSON互转换利器-Gson

    Gson作为Java对象和JSON转换的利器,通过其强大的功能和简洁的API,简化了开发者在JSON数据处理中的工作。无论是基本类型还是复杂对象,Gson都能轻松应对,同时提供了自定义转换的灵活性,使得在实际项目中更加...

    Json转换利器Gson实例代码

    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 2.3.1 json转换利器

    Gson是Google开发的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。它的全称是Google Simple JSON,其版本2.3.1是一个较为稳定且广泛使用的版本,适用于许多Android和Java项目。本篇文章将深入探讨Gson ...

    Json转换利器Gson实例代码,java对象或者list转换为json字符串

    Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。 java对象或者list转换为json字符串

    gson-jar的资源,处理json字符串请下载

    总结来说,Gson-jar资源是Java开发中处理JSON的利器,提供了方便、高效的序列化和反序列化功能,对于任何需要与JSON格式数据打交道的Java项目来说,都是不可或缺的工具。使用Gson,你可以轻松地在Java对象和JSON之间...

    gson2.7.jar

    标题中的"gson2.7.jar"正是这个库的二进制文件,可以被Java项目引入作为依赖来实现JSON操作。 Gson库的核心功能在于它提供了便捷的方法将Java对象转换为对应的JSON字符串,反之亦然。描述中的`String json = new ...

    gson-2.3.1.zip

    在描述中提到,Gson库是处理JSON的利器,它可以将JSON字符串转化为Java对象。这是一个关键特性,因为JSON作为轻量级的数据交换格式,广泛用于Web服务和移动应用中。Gson通过反射机制,可以自动将JSON字符串映射到...

    JavaScript利器GSON

    文件包括(1.GSON的jar包。2.GSON的源码。3.Gson的HTML和CHM的API文档)。统一版本号2.2.4。 JavaScript在编程语言中一直很热门.JSON...GSON在以Java开发的C/S(包括B/S)中有很好的发挥,GSON是Google开发的。

    gson-2.7.jar包

    总之,Gson-2.7.jar是Java开发中处理JSON数据的利器,其高效、灵活的特点使其在各种项目中都有广泛的应用。无论是新手还是经验丰富的开发者,都能从中受益,轻松地在Java对象和JSON数据之间穿梭。

    flash2316.rar

    在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务与客户端之间的...无论是在Web服务开发、Android应用还是其他Java相关项目中,Gson都是处理JSON数据不可或缺的利器。

    Json一键转Javabean工具

    这通常通过JSON库来实现,如Jackson、Gson或Fastjson等。这些库提供了API,可以将JSON字符串转化为JSON对象或者JSON数组。 2. **映射属性**:解析后的JSON对象会被映射到JavaBean的属性上。这个过程需要考虑到JSON...

    com.alibaba.fastjson json解析工具包

    总之,`com.alibaba.fastjson`是一个功能强大、性能优异的JSON处理工具包,对于Java开发者来说,它是一个不可或缺的开发利器。在处理JSON数据时,`fastjson`的高效、易用和全面性使得它成为首选的JSON解析库。通过...

    fast-json.zip

    《深入理解阿里巴巴FastJson:高效JSON...总结,阿里巴巴的FastJson凭借其出色的性能和易用性,已经成为Java开发者处理JSON数据的首选工具之一。了解并熟练掌握FastJson的使用,能够提升开发效率,优化应用程序的性能。

    Json jar包

    JSON(JavaScript Object Notation)...总之,"Json jar包"是Java开发中处理JSON数据的利器,它的存在简化了数据交换的流程,提高了开发效率。合理利用这个库,可以更好地实现Java应用与服务器或客户端之间的数据交互。

    json格式数据解析工具类

    在Java开发中,处理JSON数据通常需要借助JSON解析库,如Gson、Jackson、org.json等。本文档介绍的“json格式数据解析工具类”正是为了简化这一过程而设计的,通过这个工具类,开发者可以直接传入JSON字符串,调用...

    Asy+httpcore+gson.zip

    **Gson** 是Google开发的一个Java库,用于在Java对象和JSON数据之间进行映射。它能够轻松地将JSON字符串转换为Java对象,反之亦然。Gson的强大之处在于其灵活性和深度,它可以处理复杂的数据结构,如嵌套对象和数组...

    json.org.jar

    此外,随着Java生态的发展,出现了许多其他JSON库,如Jackson、Gson、Fastjson等,它们提供了更丰富的功能和更高的性能。这些库可能更适合大型项目或者有特定需求的开发环境。因此,在选择JSON处理库时,应根据项目...

    GsonFormat.7z

    总的来说,GsonFormat插件是提升Java开发者处理JSON数据效率的利器,通过简化JSON到JavaBean的转换过程,使得开发工作更加高效便捷。对于经常需要处理JSON数据的Java开发者而言,这是一个非常实用的工具。在实际应用...

    Json生成实体类工具

    它能够解析JSON文本,并自动生成与之对应的实体类代码,避免了手动创建和维护这些类的繁琐工作。 这个工具可能具备以下特点: 1. **易用性**:工具简单好用,说明用户界面直观,操作流程简洁,无需复杂设置即可快速...

    Java中的小知识—–JSON

    - Gson库:Google开发的Gson库允许Java对象和JSON数据之间进行互相转换。例如,你可以将一个Java对象序列化为JSON字符串,也可以将JSON字符串反序列化为Java对象。Gson库的使用非常直观,例如: ```java import ...

Global site tag (gtag.js) - Google Analytics