`
bright_future
  • 浏览: 88893 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Gson实践

阅读更多

在android开发中与服务器端的数据传输大多采用json格式,gson可以方便的进行java对象、json字符串的相互转化。项目地址:http://code.google.com/p/google-gson/

Gson使用简单,可以实现含有多层引用、继承的java对象与json间转化,还可以通过annotation进行选择性的属性转化

一、简单json转换

      简单json转换(对象的全部属性均转换)通过以下方式

 

Gson gson = new Gson();//全部属性转换实例化
gson.toJson(user);//对象转化为json
gson.fromJson(json, User.class);//json转化为对象
gson.toJson(list);//list转化为json
gson.fromJson(json, new TypeToken<List<User>>(){}.getType());//json转化为list

 

    Demo:

 

public class User implements Serializable{

	private static final long serialVersionUID = 1L;
	
	private Long id;
	private String name;
	private boolean isManager;
	private List<User> userlist;
	
	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 boolean isManager() {
		return isManager;
	}
	public void setManager(boolean isManager) {
		this.isManager = isManager;
	}
	public List<User> getUserlist() {
		return userlist;
	}
	public void setUserlist(List<User> userlist) {
		this.userlist = userlist;
	}
	
}

 

import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class GsonTest {
	Gson gson = new Gson();
	
	/**
	 * 初始化User对象
	 * @return
	 */
	public User getUser(){
		User user = new User();
		user.setId(1l);
		user.setManager(false);
		user.setName("测试");
		List<User> userlist = new ArrayList<User>();
		for(int i=0;i<10;i++){
			User temp = new User();
			//temp.setId(2l*i); 设置一个null
			temp.setManager(true);
			temp.setName("测试"+i);
			userlist.add(temp);
		}
		user.setUserlist(userlist);
		return user;
	}
	
	/**
	 * 初始化属性不全的json串
	 * @return
	 */
	public String getUserJson(){
		return "{\"id\":\"1\",\"isManager\":\"true\",\"name\":\"你好\",\"userlist\":[{\"id\":\"1\"}]}";
	}
	
	/**
	 * 初始化属性不全的json array
	 * @return
	 */
	public String getUserArrayJson(){
		return "[{\"id\":\"1\",\"isManager\":\"true\",\"name\":\"你好\",\"userlist\":[{\"id\":\"1\"}]}]";
	}
	
	/**
	 * 初始化list
	 * @return
	 */
	public List<User> getUserList(){
		List<User> userlist = new ArrayList<User>();
		for(int i=0;i<10;i++){
			User temp = new User();
			//temp.setId(2l*i); 设置一个null
			temp.setManager(true);
			temp.setName("测试"+i);
			userlist.add(temp);
		}
		return userlist;
	}
	
	/**
	 * json转化为对象
	 * @param json
	 * @return
	 */
	public User json2Object(String json){
		User user = gson.fromJson(json, User.class);
		return user;
	}
	
	/**
	 * 对象转化为json
	 * @param user
	 * @return
	 */
	public String object2Json(User user){
		String str = gson.toJson(user);
		return str;
	}
	/**
	 * list转化为json
	 * @param list
	 * @return
	 */
	public String list2Json(List<User> list){
		return gson.toJson(list);
	}
	
	public List<User> json2List(String json){
		return gson.fromJson(json, new TypeToken<List<User>>(){}.getType());
	}
	
	
	public static void main(String args[]){
		GsonTest gsonTest = new GsonTest();
		
		/**
		 *  对象转化为json
		 */
		System.err.println("------------对象转化为json-------------------");
		String userJson = gsonTest.object2Json(gsonTest.getUser());
		System.err.println(userJson);
		
		
		/**
		 * json转化为对象
		 */
		System.err.println("------------json转化为对象-------------------");
		User user = gsonTest.json2Object(gsonTest.getUserJson());
		System.err.println("用户名:"+user.getName());
		System.err.println("id:"+user.getId());
		System.err.println("是否主管:"+user.isManager());
		for(int i=0;i<user.getUserlist().size();i++){
			System.err.println("员工姓名:"+user.getUserlist().get(i).getName());
			System.err.println("员工id:"+user.getUserlist().get(i).getId());
		}
		
		/**
		 * list转化为json
		 */
		System.err.println("--------------list转化为json-----------------");
		String userlistJson = gsonTest.list2Json(gsonTest.getUserList());
		System.err.println(userlistJson);
		
		/**
		 * json转化为list
		 */
		System.err.println("--------------list转化为json-----------------");
		List<User> uselist = gsonTest.json2List(gsonTest.getUserArrayJson());
		for(int i=0;i<uselist.size();i++){
			System.err.println("员工姓名:"+uselist.get(i).getName());
			System.err.println("员工id:"+uselist.get(i).getId());
			for(int k=0;k<uselist.get(i).getUserlist().size();k++){
				System.err.println("下一级员工姓名:"+uselist.get(i).getUserlist().get(k).getName());
				System.err.println("下一级员工id:"+uselist.get(i).getUserlist().get(k).getId());
			}
		}
	}
}
分享到:
评论

相关推荐

    Gson实战.doc

    #### 五、Gson实践案例分析 为了更好地理解和运用Gson,可以考虑以下场景: 1. **Ajax响应处理**: - 在服务器端使用Gson将Java对象转换为JSON,然后发送给客户端。 - 客户端通过Ajax接收JSON数据并解析。 2. *...

    Gson-2.8.2 官方jar包合集【gson-2.8.2.jar,gson-2.8.2-sources.jar】

    通过查看源码,可以深入了解Gson内部的工作原理,学习其设计模式和最佳实践,也可以方便地进行调试或自定义扩展。例如,你可以看到`JsonParser`如何解析JSON字符串,或者`TypeAdapter`如何实现自定义类型转换。 3. ...

    我的gson学习例子

    通过深入学习和实践,你将能够熟练地利用Gson处理JSON数据,无论是从服务器获取的响应,还是在本地存储的数据。记住,理解JSON格式和Java对象之间的映射关系是使用Gson的关键。在实际项目中,根据需求灵活运用Gson的...

    gson-2.3.1的jar包含源码和说明文档

    4. **最佳实践**:文档中会给出使用Gson的最佳实践,比如避免直接使用`Gson().toJson()`和`new Gson().fromJson()`,而是推荐使用`GsonBuilder`来创建Gson实例,以提高性能和灵活性。 总之,Gson-2.3.1版本的源码和...

    gson技术及架包

    四、最佳实践 1. 使用`GsonBuilder`定制Gson的行为,如设置日期格式,忽略未公开的字段等。 2. 对于敏感数据,谨慎使用`@Expose`注解,避免暴露不应公开的字段。 3. 在处理大量数据时,考虑使用流式API以提高性能...

    gson解析json格式数据

    Gson的源码通常包含许多设计模式和最佳实践,对于学习Java编程和JSON处理有很高的价值。 此外,提供的说明文档可以帮助你更好地掌握Gson的使用方法,包括如何配置GsonBuilder,如何处理日期和时间,如何处理嵌套...

    GsonDemo小例子

    这个“GsonDemo小例子”显然涉及到如何使用Gson库进行JSON操作的基本概念和实践。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成...

    GSON-2.85.rar

    4. **查阅官方文档**:了解Gson的最新API使用方式,确保代码符合最佳实践。 压缩包内的“gson-2.8.5.jar”是Gson库的新版本,可以直接替换项目中的旧版本。而“使用说明.txt”可能包含了如何引入新版本Gson到项目中...

    利用Google Gson实现JSON字符串和对象之间相互转换

    在Java开发中,数据交换和存储常常涉及到JSON格式。JSON(JavaScript Object Notation)是一种轻...在`hsun_gson`这个压缩包文件中,可能包含了示例源码和Gson的jar包,你可以参考这些资源进一步学习和实践Gson的使用。

    Google Gson解析Json数据应用实例

    在Java开发中,Google Gson库是一个非常流行的工具,用于将Java对象转换为JSON字符串,以及将JSON字符串反序列化回Java对象...通过对这些示例的分析和实践,开发者能够更熟练地运用Gson来处理JSON数据,提高开发效率。

    google-gson-2.1 jar包 + 使用教程.pdf

    教程还可能包含实践示例,帮助你更好地理解和应用Gson。 总的来说,Gson是一个强大的JSON处理库,它简化了Java和JSON之间的数据转换,对于任何需要与JSON交互的Java项目都是不可或缺的工具。通过阅读提供的教程,你...

    Android Gson解析案例

    在Android开发中,Gson库是一个非常常用的工具,它由Google提供,用于在Java对象和JSON数据之间进行...通过学习和实践这些案例,开发者能够提升自己的Android应用开发技能,特别是在网络数据交互和本地数据存储方面。

    gson2.7相关jar包

    Gson是Google开发的一款Java库,它允许将Java对象转换为JSON字符串,同时也能将...此外,遵循最佳实践,例如避免直接序列化整个对象图,而是使用类型适配器或只序列化必要的字段,可以帮助提高代码的可维护性和性能。

    JSON、GSON解析json

    JSON(JavaScript Object Notation)是一种轻量级的...以上就是关于JSON和GSON在Android开发中的基础知识和实践要点。通过理解和掌握这些内容,开发者能够有效地处理JSON数据,并利用GSON库进行序列化和反序列化操作。

    gson-2-3-1

    在描述中提到"Gson框架",表明我们可能将讨论关于如何在项目中集成和使用Gson的实践,包括添加依赖、配置GsonBuilder以优化性能,以及处理各种JSON与Java类型转换的场景。 在标签中,"json"暗示了Gson与JSON数据...

    Google - gson

    谷歌的Gson库是一款强大的Java库,用于将Java对象转换为JSON(JavaScript Object Notation)格式,反之亦然。这个库使得在Java应用程序中处理...通过深入学习和实践,开发者可以充分利用Gson的强大功能,提升开发效率。

    gson 2.3.1 json转换利器

    四、最佳实践 1. 使用`GsonBuilder`构建Gson实例,可以定制Gson的行为,如忽略未知字段、设置日期格式等。 2. 对于复杂的JSON结构,可以使用`JsonObject`, `JsonArray`, `JsonElement`等类进行逐层解析。 3. 避免...

    最新java gson

    Java Gson 是一个强大的库,由Google提供,用于在Java对象和JSON数据之间进行相互转换。JSON(JavaScript Object Notation)是一种轻量级的数据...通过不断的实践和学习,你可以充分利用Gson的强大功能,提升开发效率。

    Android学习笔记--Gson笔记

    在Android开发中,Gson库是一个非常重要的工具,它是由Google提供的用于在Java对象和JSON数据之间进行映射的Java库。这篇“Android学习笔记--Gson...通过实践如`GsonDemo`这样的示例,开发者可以更好地理解和运用Gson。

    converter-gson-2.9.0.jar / retrofit-2.9.0.jar

    在Android开发中,Retrofit和Gson是两个非常重要的库,它们极大地简化了网络请求和JSON数据解析的工作。...在实际项目中,一定要注意阅读官方文档,了解最新特性和最佳实践,以便更好地利用这两个库的优势。

Global site tag (gtag.js) - Google Analytics