关于gson:Gson的TypeToken与泛型擦除
原创:扣钉日记(微信公众号ID:codelogs),欢送分享,转载请保留出处。问题在Java的json框架中,Gson是应用得比拟宽泛的一个,其Gson类提供了toJson()与fromJson()办法,别离用来序列化与反序列化。 json序列化用得最多的场景是在调用内部服务接口时,大抵如下: @Data@AllArgsConstructorpublic class Response<T>{ int code; String message; T body;}@Data@AllArgsConstructorpublic class PersonInfo{ long id; String name; int age;}/** * 服务端 */public class Server { public static String getPersonById(Long id){ PersonInfo personInfo = new PersonInfo(1234L, "zhangesan", 18); Response<PersonInfo> response = new Response<>(200, "success", personInfo); //序列化 return new Gson().toJson(response); }}/** * 客户端 */public class Client { public static void getPerson(){ String responseStr = Server.getPersonById(1234L); //反序列化 Response<PersonInfo> response = new Gson().fromJson(responseStr, new TypeToken<Response<PersonInfo>>(){}.getType()); System.out.println(response); }}因为大多数接口设计中,都会有对立的响应码构造,因而大多我的项目都会像下面一样,设计一个通用Response类来对应这种对立响应码构造,是很常见的状况。 ...