基于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
	    *
	    * @param json
	    * @param cls
	    * @return list
	    */
	   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>
	    */
	   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
	    */
	   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,这个时候就需要我们自定义序列化或者反序列化的方法了

你可能感兴趣的:(json)