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();
}
}

时间: 2025-01-04 15:26:51

GsonUtils.java的相关文章

个人学习积累

QQ 596957738 - 有问题可以联系我 可以使用 Ctrl + F 搜索 --更新于2018年03月29日 . │ 7z1604-x64加压工具-压缩工具.zip │ t.txt │ 禁止全文件夹分享.txt │ ├───0 Android │ │ 0 注意细节.docx │ │ About MODE_WORLD_READABLE .txt │ │ AutoScalingLayout-master 自动适配的布局.zip │ │ BadgeView 库.例子.rar │ │ event.

HttpClientUtils.java

package com.vcredit.ddcash.batch.util; import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.HttpURLConnect

Android GsonUtils工具类

有那么一个开源jar包,叫gson 可以很方便的将java中的对象和字符串相互转化,数据传输和处理的时候,用到的可能性很大 https://github.com/google/gson http://search.maven.org/#artifactdetails|com.google.code.gson|gson|2.3.1|jar 用法:使用的时候,首先需要通过new方法进行实例化. 假如用的地方比较多的时候,或者某个方法重复运行多次的时候,就需要实例化这个对象多次 项目中为避免这种情况,

【Java&amp;Android开源库代码剖析】のandroid-async-http の网络响应ResponseHandlerInter

由于我们设计的是异步的网络请求框架,因此代码实现使用的是基于接口回调的方式来处理从服务器端返回的数据,鉴于数据格式多种多样,例如有二进制文件,普通文本文件,json格式字符串 ,xml格式字符串,断点续传文件等等,因此从响应处理接口会派生出很多子类,专门处理不同格式的数据.从下面的UML类图可以看到响应处理器接口是ResponseHandlerInterface,从这个接口派生出AsyncHttpResponseHandler抽象类,它是所有其他ResponseHandler类的基类,基类基于A

IDEA中 tomcat 控制台中文乱码解决 及GsonUtils无法转换时间格式

IDEA中 tomcat 控制台中文乱码解决 1.找到tomcat 安装目录下的 conf /logging.properties 文件打开 2.将 java.util.logging.ConsoleHandler.encoding = UTF-8 修改为 java.util.logging.ConsoleHandler.encoding = GBK 3.保存后 重启idea ————————————————GsonUtils需添加时间模式 datePattern指定模式 原文地址:https:

Java多线程学习(吐血超详细总结)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 三Thread和Runnable的区别 四线程状态转换 五线程调度 六常用函数说明 使用方式 为什么要用join方法 七常见线程名词解释 八线程同步 九线程数据传递 本文主要讲了java中多线程的使用方法.线程同步.线程数据传递.线程状态及相应的一些线程函数用法.概述等. 首先讲一下进程和线程

Java TM 已被阻止,因为它已过时需要更新的解决方法

公司的堡垒机需要通过浏览器登陆,且该堡垒机的网站需要Java的支持,最近通过浏览器登陆之后总是提示"java TM 已被阻止,因为它已过时需要更新的解决方法"导致登陆之后不能操作, 但是操作系统中确实已经安装了比较新的JDK,安装的JDK版本是jdk-7u67-windows-i586,因为太烦人,所以决定搞清楚报错的原因,一劳永逸,彻底解决这个问题 准备工作:安装JDK,安装版本jdk-7u67-windows-i586.exe,因为机器的Eclipse还依赖64位的JDK,所以另安

Java四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor

介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? Java new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 1 2 3 4 5 6 7 new Thread(new

由@NotNull 注解引出的关于Java空指针的控制(转)

Java 小技巧和在java应用避免NullPonintException的最佳方法 在java应用程序中,一个NullPonintException(空指针异常)是最好解决(问题)的方法.同时,空指针也是写健壮的顺畅运行的代码的关键.“预防好过治疗”这句话也同样适用于令人不爽的NullPonintException.通过应用防御性的编码技术和在遵守多个部分之间的约定,你可以再很大程度上避免NullPointException.下面的这些java小技巧可以最小化像!=null这种检查的代码.作为