Json数据交换一Gson
Posted 遇事不决,可问神奇海螺
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Json数据交换一Gson相关的知识,希望对你有一定的参考价值。
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
一、Gson的基本用法
基本数据类型的解析(String解析成其他类型)
Gson gson = new Gson();
int i = gson.fromJson("100", int.class); //100
double d = gson.fromJson(""99.99"", double.class); //99.99
boolean b = gson.fromJson("true", boolean.class); // true
String str = gson.fromJson("String", String.class); // String
基本数据类型的生成
Gson gson = new Gson();
String jsonNumber = gson.toJson(100); // 100
String jsonBoolean = gson.toJson(false); // false
String jsonString = gson.toJson("String"); //"String"
POJO类生成JSON
Gson gson = new Gson();
User user = new User("毛驴哥",24);
String jsonObject = gson.toJson(user); // {"name":"毛驴哥","age":24}
POJO类解析JSON
Gson gson = new Gson();
String jsonString = "{"name":"毛驴哥","age":24}";
User user = gson.fromJson(jsonString, User.class);
二、属性重命名 @SerializedName 注解的使用
json的email_address就可以对应属性名emailAddress
@SerializedName("email_address")
public String emailAddress;
SerializedName注解提供了两个属性,上面用到了其中一个,别外还有一个属性alternate,接收一个String数组。
@SerializedName(value = "emailAddress", alternate = {"email", "email_address"})
public String emailAddress;
三个属性(email_address、email、emailAddress)中出现任意一个时均可以得到正确的结果。
三、Gson中使用泛型
对于Java来说List
为了解决的上面的问题,Gson为我们提供了TypeToken来实现对泛型的支持
Gson gson = new Gson();
String jsonArray = "["android","Java","php"]";
String[] strings = gson.fromJson(jsonArray, String[].class); //直接改为 List<String>.class 是行不通
List<String> stringList = gson.fromJson(jsonArray, new TypeToken<List<String>>() {}.getType());
注:TypeToken的构造方法是protected修饰的,所以上面才会写成new TypeToken<List
四.泛型POJO
当有部分数据不同,其他数据相同时,可以用泛型POJO减少类的定义
{"code":"0","message":"success","data":{}}
{"code":"0","message":"success","data":[]}
public class Result<T> {
public int code;
public String message;
public T data;
}
以上是关于Json数据交换一Gson的主要内容,如果未能解决你的问题,请参考以下文章