GSON的使用

一、作用

Gson 是 Java 序列化/反序列化库,用于将 Java 对象转换为 JSON 并返回。

二、Java Gson Maven 依赖

<dependency>
	<groupId>com.google.code.gson</groupId>
	<artifactId>gson</artifactId>
	<version>2.8.2</version>
</dependency>

三、Java Gson 特性

用于 Java 对象 JSON 序列化和反序列化的简单工具。

Java 泛型的广泛支持。

对象的自定义表示。

支持任意复杂的对象。

快速,低内存占用。

允许紧凑的输出和漂亮的打印。

四、测试

1、创建GSON的两种方式

Gson gson = new Gson();
Gson gson = new GsonBuilder()
                .setPrettyPrinting()
                .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DOTS)
                .serializeNulls()
                .create();
描述方法示例
美观输出,即格式化之后的json,默认falsesetPrettyPrinting()
设置序列化null值,不加此参数null不会显示serializeNulls()
创建create()
格式json的keysetFieldNamingPolicy
key和实体字段名称一致,包括大小写;FieldNamingPolicy.IDENTITYstudentName—>studentName
单词用下划线分隔,全小写;FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORESstudentName—>student_name
首字母大写;FieldNamingPolicy.UPPER_CAMEL_CASEstudentName—>StudentName
单词用空格分隔,单词首字母大写;FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACESstudentName—>Student Name
单词用“-”分隔,全小写;FieldNamingPolicy.LOWER_CASE_WITH_DASHESstudentName—>student-name
单词用“.”分隔,全小写;FieldNamingPolicy.LOWER_CASE_WITH_DOTSstudentName—>student.name

2、对象或集合转json

// 对象转json
Student student = new Student();
student.setStudentName("张三");
student.setStudentAge(25);
student.setStudentSex("男");
student.setStudentIdCard("123456789");
student.setStudentAddress(null);

String json = gson.toJson(student);
System.out.println("对象转json:" + json);

// 集合转json
List<Student> studentList = new ArrayList<>();
for (int i = 1; i <= 1; i++) {
    Student student = new Student();
    student.setStudentName("张三");
    student.setStudentAge(25);
    student.setStudentSex("男");
    student.setStudentIdCard("123456789");
    student.setStudentAddress(null);
    studentList.add(student);
}
String jsonList = gson.toJson(studentList);
System.out.println("集合转json:" + jsonList);

3、json转对象或转集合

// json转对象
Student student = gson.fromJson(json, Student.class);
System.out.println("json转对象:" + student);

// json转对象集合
List<Student> student = gson.fromJson(jsonList, new TypeToken<List<Student>>() {
}.getType());
System.out.println("json转集合:" + student.toString());

4、字段匹配

在某些情况下json字段和实体字段不一致,可以使用注解解决

/**
 * value:序列化或反序列化时字段的所需名称。
 * alternate:反序列化时字段的替代名称。除了'value'属性之外,它还提供了更多可能的名称。如果有多个字段与一个属性匹配,Gson将使用最后处理的字段。
 */
@SerializedName(value = "name", alternate = {"aaa"})
private String studentName;

五、判断jSON字符长是对象还是集合

String jsonStr = "json字符串";
Object json = new JSONTokener(jsonStr).nextValue();
if(json instanceof JSONObject){
    JSONObject jsonObject = (JSONObject)json;
} else if (json instanceof JSONArray){
    JSONArray jsonArray = (JSONArray)json;

}

学习记录

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东来东往i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值