基于gson封装json工具类JsonUtil

基于gson封装json工具类JsonUtil

一:

1:简介

GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java对象转化为Json字符串。

2:两个基本概念

Serialization:序列化,使Java对象到Json字符串的过程。Deserialization:反序列化,字符串转换成Java对象

3:两个基本方法

toJson();
fromJson();

4:两种创建方式

直接new对象(直接使用默认配置)
Gson gson = new gson();
使用GsonBuilder
Gson gson = new GsonBuilder().serializeNulls().create();
Gson的一些常用配置
	.excludeFieldsWithoutExposeAnnotation() //不对没有用@Expose注解的属性进行操作
    .enableComplexMapKeySerialization() //当Map的key为复杂对象时,需要开启该方法
    .serializeNulls() //当字段值为空或null时,依然对该字段进行转换
    .setDateFormat("yyyy-MM-dd HH:mm:ss:SSS") //时间转化为特定格式
    .setPrettyPrinting() //对结果进行格式化,增加换行
    .disableHtmlEscaping() //防止特殊字符出现乱码
    .registerTypeAdapter(User.class,new UserAdapter()) //为某特定对象设置固定的序列或反序列方式,自定义Adapter需实现JsonSerializer或者JsonDeserializer接口
    .create();

二:封装

1. 添加maven依赖

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

2. 编写工具类jsonUtil

	package com.json.util;
	
	import java.util.List;
	import java.util.Map;
	
	import com.google.gson.Gson;
	import com.google.gson.reflect.TypeToken;
	

	
	/**
	* 
	* @Description: 基于Gson封装的jsonUtil
	* @author hbb
	* @date 2019年1月1日
	*
	*/
	public class GsonUtil {
	   private static Gson gson = null;
	   static {
	       if (gson == null) {
	           gson = new Gson();
	       }
	   }
	
	   private GsonUtil() {
	   }
	
	   /**
	    * 对象转成json
	    *
	    * @param object
	    * @return json
	    */
	   public static String objectToJson(Object object) {
	       String json = null;
	       if (gson != null) {
	          json = gson.toJson(object);
	       }
	       return json;
	   }
	
	   /**
	    * Json转成对象
	    *
	    * @param json
	    * @param cls
	    * @return 对象
	    */
	   public static <T> T gsonToBean(String json, Class<T> cls) {
	       T t = null;
	       if (gson != null) {
	           t = gson.fromJson(json, cls);
	       }
	       return t;
	   }
	
	   /**
	    * json转成list<T>
	    *
	    * @param json
	    * @param cls
	    * @return list<T>
	    */
	   public static <T> List<T> gsonToList(String json, Class<T> cls) {
	       List<T> list = null;
	       if (gson != null) {
	           list = gson.fromJson(json, new TypeToken<List<T>>() {
	           }.getType());
	       }
	       return list;
	   }
	
	   /**
	    * json转成list中有map的
	    *
	    * @param json
	    * @return List<Map<String, T>>
	    */
	   public static <T> List<Map<String, T>> gsonToListMaps(String json) {
	       List<Map<String, T>> list = null;
	       if (gson != null) {
	           list = gson.fromJson(json, new TypeToken<List<Map<String, T>>>() {
	           }.getType());
	       }
	       return list;
	   }
	
	   /**
	    * json转成map的
	    *
	    * @param json
	    * @return Map<String, T>
	    */
	   public static <T> Map<String, T> gsonToMaps(String json) {
	       Map<String, T> map = null;
	       if (gson != null) {
	           map = gson.fromJson(json, new TypeToken<Map<String, T>>() {
	           }.getType());
	       }
	       return map;
	   }
	}
```	
实际开发中我们会遇到比较复杂的JSON,这个时候就需要我们自定义序列化或者反序列化的方法了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值