GSON学习笔记

来源:互联网 发布:js split 空字符串 编辑:程序博客网 时间:2024/05/16 06:15

 在Android开发中,我们Android客户端如果要和服务器端交互,一般都会采用json数据格式进行交互,json对于大家来说都不陌生,本文讲述一下关于gson,gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。

    举一个简单的例子:

    一个实体类 Person.java,参考代码如下:

  1 public class Person { 
  2     private String name; 
  3     private int age; 
  4     public String getName() { 
  5         return name; 
  6     } 
  7     public void setName(String name) { 
  8         this.name = name; 
  9     } 
 10     public int getAge() { 
 11         return age; 
 12     } 
 13     public void setAge(int age) { 
 14         this.age = age; 
 15     } 
 16     @Override 
 17     public String toString() 
 18     { 
 19         return name + ":" +age; 
 20     } 
 21 }

    我们给这个类赋值,看看如何使用gson如何使用:

    1.gson生成Json字符串

  1 Gson gson = new Gson();//实例化gson 
  2 List<Person> persons = new ArrayList<Person>(); 
  3 for (int i = 0; i < 10; i++) { 
  4      Person p = new Person(); 
  5      p.setName("name" + i); 
  6      p.setAge(i * 5); 
  7      persons.add(p); 
  8 } 
  9 String str = gson.toJson(persons);//转换json

    说明:上面代码主要说明gson的使用,它提供了toJason()方法将对象转换成Json字符串,转换出来就是很标准的json字符串.

    2.gson如何将json字符串转换成java实体类

    Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。

    日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其他结构。

    1)转换单一java实体如何实现

    比如json字符串为:[{"name":"张三","age":20}],那么转换方式如下:

  1 Person person = gson.fromJson(str, Person.class);

    2)转换成列表类型

    如果一个类中只有一个属性,并且这个属性是一个集合。如下:

    public class DeviceInMapData implements Serializable{

public ArrayList<DeviceInfo>deviceInfos;
public class DeviceInfo{
String id;
float longitude;
float latitude;
Boolean isWran;
int spdStatus;
float lightningValue;
}
    }

    则不能使用上面第一种解析方式。会报json解析语法错误。只有使用下面这种方式。

    比如json字符串为:[{"name":"张三","age":20},{"name":"李四","age":15},{"name":"王五","age":21}]

  1 List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType()); 
  2 for(int i = 0; i < ps.size() ; i++) 
  3 { 
  4 Person p = ps.get(i); 
  5 System.out.println(p.toString()); 
  6 }

    说明:上面的代码使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。

0 0
原创粉丝点击