常见JSON工具包之Gson的简单运用

  想必大家在日常编码过程中肯定少不了使用一些JSON工具包的吧,比如 Gson、FastJson、JackSon、Json lib 等等,它们都属于 JSON 工具包。我个人比较喜欢 Gson,接下来咋们使用 Gson 进行一些常规的 Json 转换等简单运用吧。

⚠️注意:代码中使用了 Guava 工具包,在执行下述代码时请注意添加相关的 jar 包依赖,Guava 工具包与本次的重点 Gson 无关,仅用来快速创建 List 等场景。本次使用的 Gson 版本为 2.8.7 ,测试时请尽量保持一致。

Gson

Gson 是一个 Java 库,是目前功能最全的 Json 解析神器。Gson 的应用主要为 toJson 与 fromJson 两个转换函数,无依赖,不需要例外额外的 jar,能够直接跑在 JDK 上。它可用于将 JSON 字符串转换为等效的 Java 对象。Gson 可以处理任意 Java 对象,包括您没有源代码的预先存在的对象。

Gson官方地址:https://github.com/google/gson

Maven依赖引入方式

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

Gradle依赖引入方式

dependencies {
  implementation 'com.google.code.gson:gson:2.8.7'
}

下载 Jar 包手动导入的方式

Maven中央仓库 Gson 下载连接:gson-2.8.7

本站附件 Gson 下载链接:gson-2.8.7

如果 Maven 中央仓库访问下载较慢则建议直接下载本站附件提供的 Gson 包。

常规使用-Code

package com.gson;

import com.google.common.collect.Lists;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.io.Serializable;
import java.lang.reflect.Modifier;
import java.util.List;

/**
 * Gson测试类
 * @author dev.hy
 */
public class GsonClass {
   

    public static void main(String[] args) {
   
        GsonEntity entity4 = new GsonEntity("<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title>hyblogs-Gson</title></head><body>    <h1>dev.hy</h1>    <p>huangyong。</p></body></html>", 4);
        GsonEntity entity3 = new GsonEntity("dev.hyblogs.com", 3, Lists.newArrayList(entity4));
        GsonEntity entity2 = new GsonEntity("dev.hyblogs", 2, Lists.newArrayList(entity3), "Public-2", "Hello!!!");
        GsonEntity entity1 = new GsonEntity("dev.hy", 1, Lists.newArrayList(entity2), "Public-1", "Fuck it!!");
        GsonEntity entity0 = new GsonEntity("dev", 0, Lists.newArrayList(entity1), "Public-0", "Oh!!");

        /* 将Java对象转换成Json字符串 */
        String jsonStr0 = new GsonBuilder().create().toJson(entity0);
        System.out.println("jsonStr0:" + jsonStr0);

        /* 将Java对象转换成Json字符串--保留值为空(null)的字段 */
        String jsonStr1 = new GsonBuilder().serializeNulls().create().toJson(entity0);
        System.out.println("jsonStr1:" + jsonStr1);

        /* 将Java对象转换成Json字符串--根据Modifier选择移除的访问修饰符(private) */
        String jsonStr2 = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PRIVATE).create().toJson(entity0);
        System.out.println("jsonStr2:" + jsonStr2);

        /* 将Java对象转换成Json字符串--根据Modifier选择移除的访问修饰符(public) */
        String jsonStr3 = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PUBLIC).create().toJson(entity0);
        System.out.println("jsonStr3:" + jsonStr3);

        /* 将Java对象转换成Json字符串--根据Modifier选择移除的访问修饰符(protected) */
        String jsonStr4 = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PROTECTED).create().toJson(entity0);
        System.out.println("jsonStr4:" + jsonStr4);

        /* 将Java对象转换成Json字符串--根据Modifier选择移除的访问修饰符(static) */
        String jsonStr5 = new GsonBuilder().excludeFieldsWithModifiers(Modifier.STATIC).create().toJson(entity0);
        System.out.println("jsonStr5:" + jsonStr5);

        /* 将Java对象转换成Json字符串--禁用Html转义 */
        String jsonStr6 = new GsonBuilder().disableHtmlEscaping().create().toJson(entity0);
        System.out.println("jsonStr6:" + jsonStr6);

        /* 将Json字符串转换成Java对象(含List对象) */
        GsonEntity gsonEntity = new Gson().fromJson(jsonStr0, GsonEntity.class);
        System.out.println("gsonEntity:" + gsonEntity);
    }

    /**
     * Gson测试实体类
     */
    static class GsonEntity implements Serializable {
   
        private static final long serialVersionUID = 2279477648424876248L;

        /** Name */
        private String name;
        /** Code */
        private Integer code;
        /** Children */
        List<GsonEntity> children;
        /** Public Field */
        public String publicField;
        /** Static Field */
        static int staticField;
        /** Transient Field */
        transient String transientField;

        public GsonEntity() {
   
        
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值