
service.JsonResponse Maven / Gradle / Ivy
package service;
import com.google.gson.*;
import com.google.gson.annotations.Expose;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
public class JsonResponse {
@Expose
public S status = null;
@Expose
public R result = null;
private final Class statusClass;
private final Class resultClass;
public JsonResponse(Class statusClass, Class resultClass) {
this.statusClass = statusClass;
this.resultClass = resultClass;
}
public void fromJSON(String json){
assert json != null;
GsonBuilder gsonBuilder = new GsonBuilder();
Type type = getType();
JsonResponse response = gsonBuilder.create().fromJson(json, type);
this.result = response.result;
this.status = response.status;
}
public String toJSON(){
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(JsonResponse.class, new JsonSerializer>() {
@Override
public JsonElement serialize(JsonResponse response, Type type, JsonSerializationContext jsonSerializationContext) {
JsonObject jsonObject = new JsonObject();
jsonObject.add("status", new Gson().toJsonTree(response.status));
jsonObject.add("result", new Gson().toJsonTree(response.result));
return jsonObject;
}
});
return gsonBuilder.create().toJson(this, JsonResponse.class);
}
private Type getType() {
// Type type = new TypeToken>(){}.getType();
return TypeToken.getParameterized(JsonResponse.class, statusClass, resultClass).getType();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy