Gson介绍
Google Gson 是 Google 开发的用来在 Java 对象和 JSON 数据之间进行映射的 Java 开源类库,可以将 Java 对象序列化为 JSON,或者由 JSON 转化为 Java 对象。
使用 Gson 库基于以下原因:
- 标准化 - Gson 是由 Google 管理的标准化库。
- 高效 - 它是 Java 标准库的可靠,快速和高效的扩展。
- 优化 - 库高度优化。
- 支持泛型 - 它为泛型提供广泛的支持。
- 支持复杂的内部类 - 它支持具有深层继承层次结构的复杂对象。
Gson 安装
java开发我们一般使用ide来开发我们的项目,如myeclipse、idea,eclipse,这里介绍使用idea来安装的我们的Gson lib包。
下载我们的gson包 https://repo1.maven.org/maven2/com/google/code/gson/gson/2.10/gson-2.10.jar
ctrl+alt+shift+S 打开项目结构
将刚才下载的jar文件导入我们的项目
点击ok导入的效果,这里我们导入了其它的 java json的包。
2.maven 安装
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10</version>
</dependency>
Gson Java对象转json字符串
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
/**
*Gson Java对象转json字符串
*/
public class JavaBeanToJSON {
public static void main(String[] args) {
//定义JSON字符串
Employee e = new Employee("易学教程","male", 22);
System.out.println( new Gson().toJson(e) );
Employee e2 = new Employee("易学教程2","male", 23);
Employee e3 = new Employee("易学教程3","male", 25);
List<Employee> list = new ArrayList<>();
list.add(e);
list.add(e2);
list.add(e3);
System.out.println(new Gson().toJson(list));
}
//JavaBean.java
public static class Employee{
private String name;
private String sex;
private Integer age;
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
'}';
}
public Employee(String name, String sex, Integer age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
}
Gson json字符串转java对象
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.List;
/**
*Gson json字符串转对象和list
*/
public class StringToJavaObject {
public static void main(String[] args) {
//定义JSON字符串
Gson gson = new Gson();
String jsonStr = "{\"age\":22,\"name\":\"易学教程\",\"sex\":\"male\"}";
Employee employee = gson.fromJson(jsonStr, Employee.class);
System.out.println(employee);
String jsonStr2 = "[{\"age\":22,\"name\":\"易学教程\",\"sex\":\"male\"},{\"age\":23,\"name\":\"易学教程2\",\"sex\":\"male\"},{\"age\":25,\"name\":\"易学教程3\",\"sex\":\"male\"}]";
List<Employee> list = gson.fromJson(jsonStr2, new TypeToken<List<Employee>>(){}.getType() );//泛型
System.out.println(list);
}
//JavaBean.java
public static class Employee{
private String name;
private String sex;
private Integer age;
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
'}';
}
public Employee(String name, String sex, Integer age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
}
在上面的例子中我们使用new TypeToken<List<Employee>>(){}.getType()
处理泛型的转换。Gson json字符串转java基本数据类型
import java.util.Arrays;
import com.google.gson.Gson;
public class GsonTester {
public static void main(String args[]) {
Gson gson = new Gson();
String title = gson.fromJson("\"yxjc123 gson \"", String.class);
long id = gson.fromJson("1", Long.class);
boolean easy = gson.fromJson("true", Boolean.class);
int arrs[] = gson.fromJson("[100,90,85]", int[].class);
System.out.println("title: " + title);
System.out.println("id: " + id);
System.out.println("easy: " +easy);
System.out.println("arrs:" + Arrays.toString(arrs));
}
}
Gson json字符串转map
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;
public class StringToMap {
public static void main(String args[]) {
String jsonString =
"{title:\"易学教程-gson转换\",id:1,easy:true,arr:[100,90,85]}";
JsonParser parser = new JsonParser();
JsonElement map = parser.parse(jsonString);
if (map.isJsonObject()) {
JsonObject details = map.getAsJsonObject();
JsonElement titleNode = details.get("title");
System.out.println("title: " +titleNode.getAsString());
JsonElement idNode = details.get("id");
System.out.println("id: " + idNode.getAsInt());
JsonElement verifiedNode = details.get("easy");
System.out.println("easy: " + (verifiedNode.getAsBoolean() ? "Yes":"No"));
JsonArray arrs = details.getAsJsonArray("arr");
for (int i = 0; i < arrs.size(); i++) {
JsonPrimitive value = arrs.get(i).getAsJsonPrimitive();
System.out.print(value.getAsInt() + " ");
}
}
}
}