原创

Java Gson 开源Java库使用方式总结

Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为串行化Java对象为JSON字符串,或反串行化JSON字符串成Java对象。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。 

1.Gson解析json数据转化为List集合,具体代码如下:

package com.yoodb;

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

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class Test {
	/**
	 * @author www.yoodb.com
	 * @param args
	 */
	public static void main(String[] args) {
		Gson gson = new Gson();
		String json = "[{'id': 1,'name': '张三','city': '北京'},"
				+ " {'id': 2,'name': '李四','map': '上海'}, "
				+ "{'id': 3,'name': '王五','map': '广州'}, "
				+ "{'id': 4,'name': '赵六','map': '深圳'}]";
		List<User> list = new ArrayList<User>();
		Type type = new TypeToken<ArrayList<User>>(){}.getType();  
		list = gson.fromJson(json, type);  
for(User user : list){  
	System.out.println(user.getName());  
} 
	}

	class User{
		private Long id;
		
		private String name;
		
		private String city;

		public Long getId() {
			return id;
		}

		public void setId(Long id) {
			this.id = id;
		}

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}

		public String getCity() {
			return city;
		}

		public void setCity(String city) {
			this.city = city;
		}
		
	}
}

2.Gson解析json数据转化为Map集合,具体代码如下:

package com.yoodb;

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

import org.apache.commons.collections.map.HashedMap;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class Test {
	/**
	 * @author www.yoodb.com
	 * @param args
	 */
	public static void main(String[] args) {
		Gson gson = new Gson();
		String json = "{'bj':{'id': 1,'name': '张三','city': '北京'},"
				+ " 'sh':{'id': 2,'name': '李四','map': '上海'}, "
				+ "'gz':{'id': 3,'name': '王五','map': '广州'}, "
				+ "'sz':{'id': 4,'name': '赵六','map': '深圳'}}";
		Map<String, User> user = gson.fromJson(json, new TypeToken<Map<String, User>>() {}.getType());
		System.out.println(user.get("bj").getName());
	}

	class User{
		private Long id;
		
		private String name;
		
		private String city;

		public Long getId() {
			return id;
		}

		public void setId(Long id) {
			this.id = id;
		}

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}

		public String getCity() {
			return city;
		}

		public void setCity(String city) {
			this.city = city;
		}
		
	}
}

注意:json返回数据有时不清楚Map集合中包含哪些数据,具体处理代码如下:

package com.yoodb;

import java.util.Map;

import com.google.gson.Gson;
public class Test {
	/**
	 * @author www.yoodb.com
	 * @param args
	 */
	public static void main(String[] args) {
		Gson gson = new Gson();
		String json = "{'bj':{'id': 1,'name': '张三','city': '北京'},"
				+ " 'sh':{'id': 2,'name': '李四','map': '上海'}, "
				+ "'gz':{'id': 3,'name': '王五','map': '广州'}, "
				+ "'sz':{'id': 4,'name': '赵六','map': '深圳'}}";
		Map map = gson.fromJson(json, Map.class);
		map = (Map) map.get("bj");
		System.out.println(map.get("city"));
	}

}

调用http接口时用户返回数据,判断是否为json格式数据,参考地址:http://www.yoodb.com/toJson,校验以及格式化功能。

~阅读全文-人机检测~

微信公众号“Java精选”(w_z90110),专注Java技术干货分享!让你从此路人变大神!回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。微信搜索小程序“Java精选面试题”,内涵3000+道Java面试题!

涵盖:互联网那些事、算法与数据结构、SpringMVC、Spring boot、Spring Cloud、ElasticSearch、Linux、Mysql、Oracle等

评论

分享:

支付宝

微信