Gson基本用法
程序员文章站
2022-04-04 12:31:04
...
Gson版本:2.3.1
pom:
1.基本用法
使用new Gson()或使用GsonBuilder.create方法创建Gson对象,然后使用toJson方法序列化或使用fromJson反序列化。
2.TypeAdapter用法
当需要对对象属性做特殊转换时,可以使用TypeAdapter进行适配,示例如下:
NameAdapter.java
Person.java
GsonTest.java
最后打印结果:{"name":{"First Name":"Will","Last Name":"Smith"},"country":"America","age":40}
3.ExclusionStrategy用法
当用户需要自定义序列化策略时,可以使用ExclusionStrategy进行定义,并在GsonBuilder创建Gson之前设置ExclusionStrategy。下面的例子是使用ExclusionStrategy实现@Ignore注解,使用该注解标注的属性不会进行序列化。
IgnoreStrategy.java
Ignore.java
Person.java
GsonTest.java
输出结果:{"name":{"First Name":"Will","Last Name":"Smith"},"country":"America","age":40}
源码见附件
其它用法,待续。。。
pom:
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.3.1</version> </dependency>
1.基本用法
使用new Gson()或使用GsonBuilder.create方法创建Gson对象,然后使用toJson方法序列化或使用fromJson反序列化。
Person person = new Person(); //初始化... Gson gson = new Gson(); gson.toJson(person);
2.TypeAdapter用法
当需要对对象属性做特殊转换时,可以使用TypeAdapter进行适配,示例如下:
NameAdapter.java
public class NameAdapter extends TypeAdapter<String> { @Override public void write(JsonWriter out, String value) throws IOException { if (value != null && !"".equals(value)) { String[] values = value.split(" "); out.beginObject(); out.name("First Name").value(values[0]); out.name("Last Name").value(values[1]); out.endObject(); } } @Override public String read(JsonReader in) throws IOException { in.beginObject(); StringBuilder sb = new StringBuilder(); in.nextName(); sb.append(in.nextString()).append(" "); in.nextName(); sb.append(in.nextString()); in.endObject(); return sb.toString(); } }
Person.java
public class Person { @JsonAdapter(NameAdapter.class) private String name; //其它属性和get、set方法省略 }
GsonTest.java
GsonBuilder builder = new GsonBuilder(); Gson gson = builder.create(); Person person = new Person(); person.setName("Will Smith"); // 拆分成{"First Name":"Will","Last Name":"Smith"} person.setAge(40); person.setCountry("America"); String json = gson.toJson(person); System.out.println(json);
最后打印结果:{"name":{"First Name":"Will","Last Name":"Smith"},"country":"America","age":40}
3.ExclusionStrategy用法
当用户需要自定义序列化策略时,可以使用ExclusionStrategy进行定义,并在GsonBuilder创建Gson之前设置ExclusionStrategy。下面的例子是使用ExclusionStrategy实现@Ignore注解,使用该注解标注的属性不会进行序列化。
IgnoreStrategy.java
public class IgnoreStrategy implements ExclusionStrategy { @Override public boolean shouldSkipField(FieldAttributes f) { return f.getAnnotation(Ignore.class) != null; } @Override public boolean shouldSkipClass(Class<?> clazz) { return false; } }
Ignore.java
@Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface Ignore { }
Person.java
public class Person { @Ignore private String privacy; //其它属性和get、set方法省略 }
GsonTest.java
public static void main(String[] args) { GsonBuilder builder = new GsonBuilder(); builder.addSerializationExclusionStrategy(new IgnoreStrategy()); Gson gson = builder.create(); Person person = new Person(); person.setName("Will Smith"); // 拆分成{"First Name":"Will","Last Name":"Smith"} person.setAge(40); person.setCountry("America"); person.setPrivacy("Something privacy"); // 不会被序列化 String json = gson.toJson(person); System.out.println(json); Person newPerson = gson.fromJson(json, Person.class); System.out.println(newPerson); }
输出结果:{"name":{"First Name":"Will","Last Name":"Smith"},"country":"America","age":40}
源码见附件
其它用法,待续。。。
上一篇: eclipse 的jar包引入工程