[英]How to create Generic method for Gson marshal and unmarshal?
我是泛型新手。
我試圖創建通用的Gson元帥(即gson.toJson())和非元帥(即gson.fromJson())方法。
public class Message {
private MessageBody messageBody;
....
}
public class MessageBody {
private List<BodyParam> bodyParams;
}
public class MessageBodyParam {
private String name;
private Object value;
}
public class JsonUtil {
//This is not working
public static <T> String marshal(Object object, Class<T> jtype) {
Gson gson = new Gson();
Type type = new TypeToken<T>() {}.getType();
return gson.toJson(object, type);
}
//this is working as expected
public static <T> T unmarshal(String jsonStr, Class<T> jtype) {
Gson gson = new Gson();
Type type = new TypeToken<T>() {}.getType();
return gson.fromJson(jsonStr, type);
}
}
我稱這些方法如下:
//Message is my class
String jsonMessage = JsonUtil.marshal(message, Message.class);
Message message = JsonUtil.unmarshal(message, Message.class);
如何在JsonUtil.marshal()中接收類類型並返回String對象?
請幫助我解決此問題。 謝謝。
為時已晚,但是這個解決方案對我來說為gson創建一個通用類是可行的:
public class JSONConversion<T>{
private T t;
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
public String ObjectToString(){
Gson gson=new Gson();
return gson.toJson(t);
}
public T StringToObject(String jsonString ,Class<T> tt){
Gson gson=new Gson();
return gson.fromJson(jsonString, tt);
}
}
您可以使用以下通用gson類:
LoginResponse loginResponse = response.body();
JSONConversion<LoginResponse> jsonConversion=new JSONConversion<>();
jsonConversion.setT(loginResponse);
String createdJson=jsonConversion.ObjectToString());
Log.d("toJson",createdJson);
LoginResponse convertedObject=jsonConversion.StringToObject(createdJson,LoginResponse.class);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.