从Gson的官方Github用户使用指南上学习总结,可能有不足之处,个人经验的总结
如果有更好的更优秀的使用方法,希望能够在评论里告知我,感谢大家
Gson官方使用手册原链接 点这里《Gson User Guide》
//初始化Gson类
Gson gson = new Gson();
//基础用法
gson.toJson(1); // ==> 1
gson.toJson("abcd"); // ==> "abcd"
gson.toJson(new Long(10)); // ==> 10
int[] values = { 1 };
gson.toJson(values); // ==> [1]
int one = gson.fromJson("1", int.class);
Integer one = gson.fromJson("1", Integer.class);
Long one = gson.fromJson("1", Long.class);
Boolean false = gson.fromJson("false", Boolean.class);
String str = gson.fromJson("\"abc\"", String.class);
String[] anotherStr = gson.fromJson("[\"abc\"]", String[].class);
//对象的转化
class User {
int id;
String name;
//这里省略类属性的get、set方法
}
User user = new User();
user.setId(100);
user.setName("test");
//将其转化为json字符串
String json = gson.toJson(user); // ==> {"id":"100","name":"test"}
//将其转化为对象
User user2 = gson.fromJson(json, User.class) //这种方法不需要强制转化
User user2 = (User) gson.fromJson(json) //这种方法需要强制转化,因为Gson不知道对象类型
//复杂对象的转化
/*
{
"id":"100",
"data":
{
"name":"one",
"number":"123456"
}
}
*/
String json;//假设该字符串对象保存以上格式json
//首先需要能够存储这种json的数据类
//省略类属性的get、set方法
class Msg {
int id;
Data[] data;
}
class Data {
String name;
String number;
}
//根据json的左右大括号来划分对象层次
Msg msg = gson.fromJson(json, Msg.class); //第一层对象,存储数据
msg.getId() // ==> 100
//Data data = msg.getData() 这里会报错,显示不能够转化,因此需要二次转化
//这里先将data第二层存储的json转化成Gson提供的JsonElement类型
//然后再将其转化成需要的类型即可正常引用数据
Data data = gson.fromJson(gson.toJsonTree(msg.getData()), Data.class);
//泛型的序列化方法
//假设有以下json字符串
/*
{
"id":"10086",
"name":"test"
}
*/
//现在像将该json数据存入HashMap中,则需要告知Gson泛型的信息
Type type = new TypeToken<HashMap<String, String>>() {}.getType();
HashMap<String, String> dataMap = gson.fromJson(json, type);
dataMap.get("id") // ==> 10086