技巧——gson工具类

最近刚刚上班,进了新公司,最近一直在看项目,和完成组长给我的任务,所以没什么时间写博客呢!今天就分享一个开发中会用的一种技术呢,那就是解析json,接下来,我就把第一天的任务,分装GSON功能包,我自己弄的,分享分享呢!

android中解析json的话,可以用本身的jsonobject,也可以使用第三方的,比如Google的gson,阿里巴巴的fastjson

贴上我写的代码哈:

package com.example.bamboo_tojson.tools;

import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;

import com.example.bamboo_tojson.bean.UserBean;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

/**
 * 转换成JSON字符串
 * 
 * @author bamboo
 * 
 */
public class JsonTools {
	/** gson对象 */
	private static Gson gson;
	static {
		gson = new Gson();
	}

	/***
	 * 将对象转换成相对应的字符串
	 * 
	 * @return json字符串
	 */
	public static String toJsonFromBean(Object obj) {
		return gson.toJson(obj);
	}

	/***
	 * 将list集合转换成相对应的字符串
	 * 
	 * @param lists
	 *            需要转换的list集合
	 * @return
	 */
	public static <T> String toJsonFromList(List<T> lists) {
		TypeToken<List<T>> type = new TypeToken<List<T>>() {
		};
		return gson.toJson(lists, type.getType());
	}

	/**
	 * 将map集合转换成相对应的字符串
	 * 
	 * @param maps
	 * @return
	 */
	public static <T> String toJsonFromMap(Map<String, T> map) {
		TypeToken<Map<String, T>> type = new TypeToken<Map<String, T>>() {
		};
		return gson.toJson(map, type.getType());
	}

	/**
	 * 将list<map<>>集合转换成相对应的字符串
	 * 
	 * @param listMaps
	 * @return
	 */
	public static <T> String toJsonFromListMap(List<Map<String, T>> listMaps) {
		TypeToken<List<Map<String, T>>> type = new TypeToken<List<Map<String, T>>>() {
		};
		return gson.toJson(listMaps, type.getType());
	}

	/**
	 * 将json转换成对象
	 * 
	 * @param result
	 * @param clz
	 * @return
	 */
	public static <T> T fromJsontoBean(String result, Class clz) {
		return (T) gson.fromJson(result, clz);
	}

	/**
	 * 将json转换成list
	 * 
	 * @param result
	 * @return
	 */
	public static <T> List<T> fromJsonToList(String result) {
		TypeToken<List<T>> type = new TypeToken<List<T>>() {
		};
		return gson.fromJson(result, type.getType());
	}

	/***
	 * 将json转换成map
	 * 
	 * @param result
	 * @return
	 */
	public static <T> Map<String, T> fromJsonToMap(String result) {
		TypeToken<Map<String, T>> type=new TypeToken<Map<String,T>>(){};
		return gson.fromJson(result, type.getType());
	}
	/**
	 * 将json转换成list<map<>>
	 * @param result
	 * @return
	 */
	public static <T> List<Map<String, T>> fromJsonToListMap(String result){
		TypeToken<List<Map<String, T>>> type=new TypeToken<List<Map<String,T>>>(){};
		return gson.fromJson(result, type.getType());
	}

}


我以前写的时候并没有分装出来,因为原本就几行代码,我就没有弄了呢,之前对于泛型也不是很会使用,这次接到了组长的任务是分装,然后就想了好多思路,上面的这几个方法,代表的是我们很常见的json格式的转换呢!

如果{name:bamboo,pwd:123} 就可以采用

fromJsontoBean


如果格式是[{},{},{}] 可以采用fromJsonToList

如果格式是{result:{code:1,data:xxx}}  可以采用fromJsonToMap

如果格式是[{result:{}},...]可以采用fromJsonToListMap




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Gson和TypeAdapter封装成一个工具类,可以方便地在项目中使用。 以下是一个示例代码: ``` import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; public class GsonUtils { private static Gson gson; static { gson = new GsonBuilder() .registerTypeAdapter(LocalDateTime.class, new LocalDateTimeTypeAdapter()) .create(); } public static String toJson(Object obj) { return gson.toJson(obj); } public static <T> T fromJson(String json, Class<T> clazz) { return gson.fromJson(json, clazz); } private static class LocalDateTimeTypeAdapter extends TypeAdapter<LocalDateTime> { private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); @Override public void write(JsonWriter out, LocalDateTime value) throws IOException { if (value == null) { out.nullValue(); } else { out.value(formatter.format(value)); } } @Override public LocalDateTime read(JsonReader in) throws IOException { if (in.peek() == null) { return null; } else { String dateTimeStr = in.nextString(); return LocalDateTime.parse(dateTimeStr, formatter); } } } } ``` 在使用时,只需要调用GsonUtils的toJson和fromJson方法即可。 例如: ``` // 对象转为Json字符串 Person person = new Person("张三", 18, LocalDateTime.now()); String jsonStr = GsonUtils.toJson(person); // Json字符串转为对象 Person person2 = GsonUtils.fromJson(jsonStr, Person.class); ``` 这样就可以方便地进行对象和Json字符串的互相转换,并且支持LocalDateTime的序列化和反序列化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值