gson的用法

Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。

gson的用法

1 基础用法toJson

toJason()方法将对象转换成Json字符串

Gson gson = new Gson();

List persons = new ArrayList();

String str = gson.toJson(persons);

2 基础用法:fromJson()

Gson提供了fromJson()方法来实现从Json字符串转化为到java实体的方法。

比如json字符串为:[{“name”:”name0”,”age”:0}]

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

提供两个参数,分别是json字符串以及需要转换对象的类型。

3 避免Unicode转义

例如:

{"s":"\u003c"}

我只想简单的打印成这样

{"s":"

解决方案:

只需要 disable HTML escaping.

Gson gson = new GsonBuilder().disableHtmlEscaping().create();

4 排除某些字段

如果一个类A中含有字段field1,它的父类也含有字段field1,那么A对象toJson的时候,就会发生declares multiple JSON fields named field1。

解决方案1:在类A中去掉字段filed1.

解决方案2:使用Json的@Expose注解

将A类MessageText中需要打印的字段filed1加上注解@Expose 。那么父类中没有加注解的field1就会被排除掉。

Gson g = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();

5 换属性名字

public class SomeClassWithFields {

@SerializedName("name") private final String someField;

private final String someOtherField;

public SomeClassWithFields(String a, String b) {

this.someField = a;

this.someOtherField = b;

}

}

SomeClassWithFields objectToSerialize = new SomeClassWithFields("a", "b");

Gson gson = new Gson();

String jsonRepresentation = gson.toJson(objectToSerialize);

System.out.println(jsonRepresentation);

===== OUTPUT =====

{"name":"a","someOtherField":"b"}

6 加版本号

public class User {

private String firstName;

private String lastName;

@Since(1.0) private String emailAddress;

@Since(1.0) private String password;

@Since(1.1) private Address address;

}

7 泛型的用法

HashMap booksMap = gson.fromJson(result, new TypeToken>() { }.getType());


分享到:


相關文章: