`
gd_shan
  • 浏览: 1063 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Gson基本用法

阅读更多
Gson版本:2.3.1
pom:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>


1.基本用法
使用new Gson()或使用GsonBuilder.create方法创建Gson对象,然后使用toJson方法序列化或使用fromJson反序列化。
Person person = new Person();
//初始化...
Gson gson = new Gson();
gson.toJson(person);


2.TypeAdapter用法
当需要对对象属性做特殊转换时,可以使用TypeAdapter进行适配,示例如下:
NameAdapter.java
public class NameAdapter extends TypeAdapter<String> {

	@Override
	public void write(JsonWriter out, String value) throws IOException {
		if (value != null && !"".equals(value)) {
			String[] values = value.split(" ");
			out.beginObject();
			out.name("First Name").value(values[0]);
			out.name("Last Name").value(values[1]);
			out.endObject();
		}
	}

	@Override
	public String read(JsonReader in) throws IOException {
		in.beginObject();
		StringBuilder sb = new StringBuilder();
		in.nextName();
		sb.append(in.nextString()).append(" ");
		in.nextName();
		sb.append(in.nextString());
		in.endObject();
		return sb.toString();
	}

}

Person.java
public class Person {
	@JsonAdapter(NameAdapter.class)
	private String name;
//其它属性和get、set方法省略
}

GsonTest.java
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();

Person person = new Person();
person.setName("Will Smith"); // 拆分成{"First Name":"Will","Last Name":"Smith"}
person.setAge(40);
person.setCountry("America");

String json = gson.toJson(person);
System.out.println(json);

最后打印结果:{"name":{"First Name":"Will","Last Name":"Smith"},"country":"America","age":40}

3.ExclusionStrategy用法
当用户需要自定义序列化策略时,可以使用ExclusionStrategy进行定义,并在GsonBuilder创建Gson之前设置ExclusionStrategy。下面的例子是使用ExclusionStrategy实现@Ignore注解,使用该注解标注的属性不会进行序列化。
IgnoreStrategy.java
public class IgnoreStrategy implements ExclusionStrategy {

	@Override
	public boolean shouldSkipField(FieldAttributes f) {
		return f.getAnnotation(Ignore.class) != null;
	}

	@Override
	public boolean shouldSkipClass(Class<?> clazz) {
		return false;
	}

}

Ignore.java
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Ignore {
}

Person.java
public class Person {
	@Ignore
	private String privacy;
//其它属性和get、set方法省略
}

GsonTest.java
public static void main(String[] args) {
		GsonBuilder builder = new GsonBuilder();
		builder.addSerializationExclusionStrategy(new IgnoreStrategy());
		Gson gson = builder.create();

		Person person = new Person();
		person.setName("Will Smith"); // 拆分成{"First Name":"Will","Last Name":"Smith"}
		person.setAge(40);
		person.setCountry("America");
		person.setPrivacy("Something privacy"); // 不会被序列化

		String json = gson.toJson(person);
		System.out.println(json);

		Person newPerson = gson.fromJson(json, Person.class);
		System.out.println(newPerson);
	}

输出结果:{"name":{"First Name":"Will","Last Name":"Smith"},"country":"America","age":40}

源码见附件
其它用法,待续。。。
分享到:
评论

相关推荐

    Gson基本使用方法

    ### Gson的基本使用方法 1. **添加依赖** 在项目中使用Gson,首先需要将其依赖引入到项目中。如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;com.google.code.gson&lt;/groupId&gt; ...

    非常详细的gson使用方法

    要将这个用户对象转换为JSON字符串,可以使用Gson的`toJson()`方法: ```java Gson gson = new Gson(); String jsonString = gson.toJson(user); ``` `jsonString`现在包含了User对象的JSON表示。 2. JSON字符串转...

    gson-2.8.5.zip

    1. **Gson基本用法**: - 将Java对象转换为JSON:通过`Gson().toJson(Object obj)`方法,可以将一个Java对象转换为JSON格式的字符串。 - JSON字符串反序列化为Java对象:使用`Gson().fromJson(String json, Class...

    Gson解析数据

    二、Gson基本用法 1. JSON字符串转Java对象 首先,我们需要一个Java类来表示JSON数据对应的结构,例如: ```java public class User { private String name; private int age; // getters and setters } ``` ...

    Gson简要使用笔记

    Gson 是 Google 推出的一款 Java 语言编写的 JSON 库,它允许开发者将 Java 对象转换成 JSON 格式的字符串,反之亦然。...通过掌握 Gson 的基本用法和注解机制,开发者可以高效地在 JSON 和 Java 类之间进行数据交换。

    Gson的基本使用

    ### Gson的基本使用 #### 序列化(对象转JSON) ```java import com.google.gson.Gson; public class User { private String name; private int age; // getters and setters... public static void main...

    Gson的基本用法

    使用Gson的jar包进行数据格式的转换,包括单个对象,对象集合,map等等

    gson 2.7 用于转换Java对象和Json对象

    Gson库是由Google提供的一个Java库,其主要功能是帮助开发者在Java对象和JSON数据之间进行相互转换。...这就是Gson 2.7在实际开发中的基本用法。当然,根据实际需求,你可以进一步定制和扩展Gson的功能。

    gson jar包下载

    使用`Gson`类的`toJson()`方法,可以将Java对象转换为JSON字符串。例如,如果有一个`Person`类,你可以这样做: ```java Gson gson = new Gson(); Person person = new Person("John", "Doe"); String json...

    gson 使用Gson将Java对象转换为JSON

    Gson有2个最基本的方法 1) toJson() – 转换java 对象到JSON 2) fromJson() – 转换JSON到java对象 下面是几个小例子 1. toJson() example Java 代码 收藏代码 1. class TestObjectToJson { 2. private int...

    fastJson和gson的用法

    JSON(JavaScript Object Notation)是一种轻...无论选择哪个库,理解其基本用法和核心特性,都能帮助我们在实际开发中更高效地处理JSON数据。同时,了解不同库的优势和适用场景,有助于我们做出最适合项目需求的选择。

    Java JSON处理库之Gson的用法详解.rar

    本文将深入探讨Gson库的使用方法,帮助开发者更高效地在Java中进行JSON操作。 一、Gson简介 Gson库允许将Java对象转换为JSON字符串,反之也可以将JSON文本解析为Java对象。它的设计目标是使JSON序列化和反序列化...

    json解析 gson fastjson

    使用Gson,你可以通过`Gson().toJson()`方法将Java对象转化为JSON字符串,通过`new Gson().fromJson()`方法将JSON字符串反序列化为Java对象。 例如: ```java Person person = new Person("John", "Doe"); String ...

    gson 需要的jar

    在本篇文章中,我们将深入探讨Gson库的基本用法、核心概念以及如何在项目中引入Gson库所需的jar文件。 首先,我们来了解什么是JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和...

    gson-2.2.4.jar下载

    Gson是Google开发的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。...通过理解和掌握Gson的基本用法和高级特性,开发者可以更高效地处理数据序列化和反序列化任务,提升项目的可维护性和可扩展性。

    gson-2.8.6.jar

    在这个例子中,`Person`类的实例被转换为JSON字符串,然后又从JSON字符串中解析回来,展示了Gson的基本用法。 总之,Gson-2.8.6.jar作为Java开发中的一个重要工具,为JSON操作提供了极大的便利,无论是简单的数据...

    Gson实战.doc

    根据提供的代码示例,我们可以进一步分析`ConvertToJson`工具类的功能及使用方法: 1. **基本序列化方法**: - `public static String toJsonWithGson(Object obj)`: 将任意Java对象序列化为JSON字符串。 - `...

    google-gson-2.1 jar包 + 使用教程.pdf

    附带的“gson使用教程.pdf”提供了详细的指南,帮助开发者快速掌握Gson的用法。 Gson的核心功能包括: 1. **对象到JSON**:通过`Gson().toJson()`方法,可以将Java对象(包括基本类型、数组、集合、自定义类等)...

    Gson的三个jar包

    下面我们将详细探讨Gson的主要功能和使用方法。 1. **序列化(对象转JSON)**:Gson允许我们将Java对象转换为JSON字符串。例如,如果你有一个User类,你可以通过`Gson().toJson(user)`方法将其转换为JSON字符串。...

Global site tag (gtag.js) - Google Analytics