zoukankan      html  css  js  c++  java
  • GsonUtils.java

    package com.vcredit.ddcash.batch.util;

    import java.util.ArrayList;
    import java.util.List;

    import org.apache.commons.lang3.StringUtils;

    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import com.google.gson.JsonElement;
    import com.google.gson.JsonObject;
    import com.google.gson.reflect.TypeToken;

    /**
    * Gson Tools
    *
    * Gson 谷歌的JSON处理工具, 好处是不用担心缺失的属性. 如: 我们的映射对象有A、B、C三个属性,
    * 如果JSON字符串缺失了某一个,转换时候不会报错(这样就可以差别不大的映射对象共用), Jackson会报错。
    *
    */
    public class GsonUtils {
    private static final Gson gson = new GsonBuilder().disableHtmlEscaping().create();

    /**
    * <pre>
    * JSON字符串转换为List数组, 提供两种方式(主要解决调用的容易程度)
    * 1. TypeToken<List<T>> token 参数转换
    * 2. Class<T> cls 方式转换
    *
    * @param json
    * @return List<T>
    *
    * <pre>
    */
    public static <T> List<T> convertList(String json, TypeToken<List<T>> token) {
    if (StringUtils.isBlank(json)) {
    return new ArrayList<T>();
    }
    return gson.fromJson(json, token.getType());
    }

    /**
    * <pre>
    * Json格式转换, 由JSON字符串转化到制定类型T
    *
    * @param json
    * @param cls
    * @return T
    *
    * <pre>
    */
    public static <T> T convertObj(String json, Class<T> cls) {
    if (StringUtils.isBlank(json)) {
    return null;
    }
    return gson.fromJson(json, cls);
    }

    /**
    * <pre>
    * java对象转化JSON
    *
    * @return String
    *
    * <pre>
    */
    public static String toJson(Object obj) {
    if (obj == null) {
    return "";
    }
    return gson.toJson(obj);
    }

    public static String getJsonObjectAsString(JsonObject jsonObject, String name) {
    if (jsonObject == null || StringUtils.isBlank(name)) {
    return null;
    }
    JsonElement jsonElement = jsonObject.get(name);
    return (jsonElement == null) ? null : jsonElement.getAsString();
    }

    public static JsonObject getJsonObjectChild(JsonObject jsonObject, String name) {
    if (jsonObject == null || StringUtils.isBlank(name)) {
    return null;
    }
    JsonElement jsonElement = jsonObject.get(name);
    return (jsonElement == null) ? null : jsonElement.getAsJsonObject();
    }

    public static boolean getJsonObjectAsBoolean(JsonObject jsonObject, String name) {
    if (jsonObject == null || StringUtils.isBlank(name)) {
    return false;
    }
    JsonElement jsonElement = jsonObject.get(name);
    return (jsonElement == null) ? false : jsonElement.getAsBoolean();
    }
    }

  • 相关阅读:
    如何解决App无法收到android开机广播
    如何实现开机启动、清缓存、杀进程、悬浮窗口单双击区分,附源码
    WaitForSingleObject 介绍【转】
    C++ Unicode SBCS 函数对照表【转】
    数字IP字符串IP转换
    打印内存【CSDN】
    巧妙的无重复随机数方法
    <unnamedtag>”后面接“int”是非法的
    友元函数与重载运算符【转】
    QT QTableWidget 用法总结【转】
  • 原文地址:https://www.cnblogs.com/muliu/p/6145179.html
Copyright © 2011-2022 走看看