使用gson封装操作json的工具类

本文介绍如何利用Gson库创建一个方便的工具类,用于在Java中进行JSON对象的序列化和反序列化操作。通过实例代码演示了如何封装基本的JSON解析和生成方法。
摘要由CSDN通过智能技术生成
package utils;

import com.google.gson.*;

import java.lang.reflect.Array;
import java.util.Map;

/**
 * 使用 gson 封装的操作 json 的工具类
 */
public final class EasyJson {

    /**
     * 全局的 Gson 转换对象
     */
    private static final Gson gson = new Gson();

    /**
     * 通过父级对象实现树形结构
     */
    private EasyJson parent;

    /**
     * 保存数据的对象
     * 树形结构的节点,可以作为分支节点或者叶节点
     */
    private JsonElement data;

    private EasyJson(EasyJson parent, boolean isObj) {
        this(parent, isObj ? new JsonObject() : new JsonArray());
    }

    private EasyJson(EasyJson parent, JsonElement data) {
        this.data = data;
        this.parent = parent;
    }

    /**
     * 获取EasyJson实例
     *
     * @return 默认的 JsonObject
     */
    public static EasyJson getInstance() {
        return getInstance(null, Boolean.TRUE);
    }

    /**
     * 获取EasyJson实例
     *
     * @param isObj 如果为true,构造实例为JsonObject,反之为JsonArray
     */
    public static EasyJson getInstance(boolean isObj) {
        return getInstance(null, isObj);
    }

    /**
     * 获取EasyJson实例
     *
     * @param parent 上层实例
     * @param isObj  是否构造为JsonObject
     */
    public static EasyJson getInstance(EasyJson parent, boolean isObj) {
        return new EasyJson(parent, isObj);
    }

    /**
     * 获取EasyJson实例
     *
     * @param data 指定构造的Json数据
     */
    public static EasyJson getInstance(JsonElement data) {
        return getInstance(null, data);
    }

    /**
     * 获取EasyJson实例
     *
     * @param parent 上层实例
     * @param data   指定构造的Json数据
     */
    public static EasyJson getInstance(EasyJson parent, JsonElement data) {
        return new EasyJson(parent, data);
    }

    /**
     * 创建下一层EasyJson对象,并将新建的对象返回
     *
     * @param name 新建的EasyJson对象在上级对象中的名称
     * @return 返回新建节点的指针
     */
    public EasyJson subObj(String name) {
        EasyJson sub = getInstance(this, Boolean.TRUE);
        this.put(name, sub.data);
        return sub;
    }

    /**
     * 基于当前 JsonArray 对象,创建下一层EasyJson对象
     *
     * @return 返回新建节点的指针
     */
    public EasyJson subObj() {
        EasyJson sub = getInstance(this, Boolean.TRUE);
        this.add(sub.data);
        return sub;
    }

    /**
     * 构建新的 JsonArray 节点,并返回节点指针
     *
     * @param 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值