简介
GsonBuilder 是 Gson 的构造器。
为什么要为 Gson 类加个 Builder ?
1、Gson 本身有很多配置,通过有参的构造函数注入配置,但是有参构造函数无法直接使用(不是 public),而无参构造函数使用的是默认配置。 2、Gson 配置太多,通过 Bulder,更易读。
示例
示例:默认配置
package org.example;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import lombok.Data;
import org.junit.jupiter.api.Test;
public class TestGson {
@Data
public static class UserInfo {
private String useName;
}
@Test
public void test() {
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
UserInfo userInfo = new UserInfo();
userInfo.setUseName("李白");
String jsonStr = gson.toJson(userInfo);
System.out.println(jsonStr);
// 以上代码输出: {"useName":"李白"}
}
}
示例:字段命名使用小写和下划线
package org.example;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import lombok.Data;
import org.junit.jupiter.api.Test;
public class TestGson {
@Data
public static class UserInfo {
private String useName;
}
@Test
public void test_01() {
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create();
UserInfo userInfo = new UserInfo();
userInfo.setUseName("李白");
String jsonStr = gson.toJson(userInfo);
System.out.println(jsonStr);
// 以上代码输出: {"use_name":"李白"}
}
@Test
public void test_02() {
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create();
UserInfo userInfo = gson.fromJson("{\"use_name\":\"李白\"}", UserInfo.class);
System.out.println(userInfo);
// 以上代码输出: TestGson.UserInfo(useName=李白)
}
}