1,概述
Gson框架主要作用是将json与java对象之间互相转换,有如下转换,
object->json,
json->object,
list->json,
json->list,
map->json,
json->map,
2,简单实例
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GsonTest {
public static void main(String[] args) {
new GsonTest().test();
}
public void test() {
Gson gson = new Gson();
/**实体类*/
UserInfo userInfo = new UserInfo("zjw", "chongqing");
/**直接调用toJson即可*/
String json = gson.toJson(userInfo);
//{"name":"zjw","address":"chongqing"}
System.out.println(json);
UserInfo userInfo1 = gson.fromJson(json, UserInfo.class);
//UserInfo{name='zjw', address='chongqing'}
System.out.println(userInfo1);
/**json -> list,同object*/
List<UserInfo> userInfos = List.of(new UserInfo("", ""));
//[UserInfo{name='', address=''}]
System.out.println(userInfos);
String listJson = gson.toJson(userInfos);
//[{"name":"","address":""}]
System.out.println(listJson);
/**由于List带泛型,编译时会擦除,所以此处传入TypeToken,将泛型类型写入,以此来保存type*/
List<UserInfo> userInfos1 = gson.fromJson(listJson, new TypeToken<List<UserInfo>>() {
}.getType());
//[UserInfo{name='', address=''}]
System.out.println(userInfos1);
/**同list*/
Map<String, UserInfo> map = new HashMap<>();
map.put("demo1", new UserInfo("map-name", "map-address"));
map.put("demo2", new UserInfo("map-name2", "map-address2"));
String mapJson = gson.toJson(map);
//{"demo1":{"name":"map-name","address":"map-address"},"demo2":{"name":"map-name2","address":"map-address2"}}
System.out.println(mapJson);
Map<String, UserInfo> map2 = gson.fromJson(mapJson, new TypeToken<Map<String, UserInfo>>() {
}.getType());
//{demo1=UserInfo{name='map-name', address='map-address'}, demo2=UserInfo{name='map-name2', address='map-address2'}}
System.out.println(map2);
}
public static class UserInfo {
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public UserInfo(String name, String address) {
this.name = name;
this.address = address;
}
@Override
public String toString() {
return "UserInfo{" +
"name='" + name + '\'' +
", address='" + address + '\'' +
'}';
}
}
}