在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实践案例分析 为了更好地理解和运用Gson,可以考虑以下场景: 1. **Ajax响应处理**: - 在服务器端使用Gson将Java对象转换为JSON,然后发送给客户端。 - 客户端通过Ajax接收JSON数据并解析。 2. *...
通过查看源码,可以深入了解Gson内部的工作原理,学习其设计模式和最佳实践,也可以方便地进行调试或自定义扩展。例如,你可以看到`JsonParser`如何解析JSON字符串,或者`TypeAdapter`如何实现自定义类型转换。 3. ...
通过深入学习和实践,你将能够熟练地利用Gson处理JSON数据,无论是从服务器获取的响应,还是在本地存储的数据。记住,理解JSON格式和Java对象之间的映射关系是使用Gson的关键。在实际项目中,根据需求灵活运用Gson的...
4. **最佳实践**:文档中会给出使用Gson的最佳实践,比如避免直接使用`Gson().toJson()`和`new Gson().fromJson()`,而是推荐使用`GsonBuilder`来创建Gson实例,以提高性能和灵活性。 总之,Gson-2.3.1版本的源码和...
四、最佳实践 1. 使用`GsonBuilder`定制Gson的行为,如设置日期格式,忽略未公开的字段等。 2. 对于敏感数据,谨慎使用`@Expose`注解,避免暴露不应公开的字段。 3. 在处理大量数据时,考虑使用流式API以提高性能...
Gson的源码通常包含许多设计模式和最佳实践,对于学习Java编程和JSON处理有很高的价值。 此外,提供的说明文档可以帮助你更好地掌握Gson的使用方法,包括如何配置GsonBuilder,如何处理日期和时间,如何处理嵌套...
这个“GsonDemo小例子”显然涉及到如何使用Gson库进行JSON操作的基本概念和实践。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成...
4. **查阅官方文档**:了解Gson的最新API使用方式,确保代码符合最佳实践。 压缩包内的“gson-2.8.5.jar”是Gson库的新版本,可以直接替换项目中的旧版本。而“使用说明.txt”可能包含了如何引入新版本Gson到项目中...
在Java开发中,数据交换和存储常常涉及到JSON格式。JSON(JavaScript Object Notation)是一种轻...在`hsun_gson`这个压缩包文件中,可能包含了示例源码和Gson的jar包,你可以参考这些资源进一步学习和实践Gson的使用。
在Java开发中,Google Gson库是一个非常流行的工具,用于将Java对象转换为JSON字符串,以及将JSON字符串反序列化回Java对象...通过对这些示例的分析和实践,开发者能够更熟练地运用Gson来处理JSON数据,提高开发效率。
教程还可能包含实践示例,帮助你更好地理解和应用Gson。 总的来说,Gson是一个强大的JSON处理库,它简化了Java和JSON之间的数据转换,对于任何需要与JSON交互的Java项目都是不可或缺的工具。通过阅读提供的教程,你...
在Android开发中,Gson库是一个非常常用的工具,它由Google提供,用于在Java对象和JSON数据之间进行...通过学习和实践这些案例,开发者能够提升自己的Android应用开发技能,特别是在网络数据交互和本地数据存储方面。
Gson是Google开发的一款Java库,它允许将Java对象转换为JSON字符串,同时也能将...此外,遵循最佳实践,例如避免直接序列化整个对象图,而是使用类型适配器或只序列化必要的字段,可以帮助提高代码的可维护性和性能。
JSON(JavaScript Object Notation)是一种轻量级的...以上就是关于JSON和GSON在Android开发中的基础知识和实践要点。通过理解和掌握这些内容,开发者能够有效地处理JSON数据,并利用GSON库进行序列化和反序列化操作。
在描述中提到"Gson框架",表明我们可能将讨论关于如何在项目中集成和使用Gson的实践,包括添加依赖、配置GsonBuilder以优化性能,以及处理各种JSON与Java类型转换的场景。 在标签中,"json"暗示了Gson与JSON数据...
谷歌的Gson库是一款强大的Java库,用于将Java对象转换为JSON(JavaScript Object Notation)格式,反之亦然。这个库使得在Java应用程序中处理...通过深入学习和实践,开发者可以充分利用Gson的强大功能,提升开发效率。
四、最佳实践 1. 使用`GsonBuilder`构建Gson实例,可以定制Gson的行为,如忽略未知字段、设置日期格式等。 2. 对于复杂的JSON结构,可以使用`JsonObject`, `JsonArray`, `JsonElement`等类进行逐层解析。 3. 避免...
Java Gson 是一个强大的库,由Google提供,用于在Java对象和JSON数据之间进行相互转换。JSON(JavaScript Object Notation)是一种轻量级的数据...通过不断的实践和学习,你可以充分利用Gson的强大功能,提升开发效率。
在Android开发中,Gson库是一个非常重要的工具,它是由Google提供的用于在Java对象和JSON数据之间进行映射的Java库。这篇“Android学习笔记--Gson...通过实践如`GsonDemo`这样的示例,开发者可以更好地理解和运用Gson。
在Android开发中,Retrofit和Gson是两个非常重要的库,它们极大地简化了网络请求和JSON数据解析的工作。...在实际项目中,一定要注意阅读官方文档,了解最新特性和最佳实践,以便更好地利用这两个库的优势。