原创

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),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

评论

分享:

支付宝

微信