我有一個對象GSON反序列化對象
public class Point{
int x, y;
Point(int x, int y){
this.x = x;
this.y = y;
}
public String toString(){
String ret = "[";
ret += Integer.toString(x);
ret += ", ";
ret += Integer.toString(y);
ret += "]";
return ret;
}
}
我已經能夠反序列化此對象GSON像這樣的數組:
class PointDeserializer implements JsonDeserializer<Point>{
@Override
public Point deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
Gson gson = new Gson();
int[] tmp = gson.fromJson(json, int[].class);
int a = tmp[0];
int b = tmp[1];
return new Point(a,b);
}
}
現在,我用最後以下,使這行得通。請注意,type和str是字符串。
Class myClass = Class.forName(type);
Class myClassDeserializer = Class.forName(type + "Deserializer");
Gson gson = new GsonBuilder().registerTypeAdapter(myClass, myClassDeserializer.newInstance()).create();
Object ret = gson.fromJson(str, myClass);
現在這裏是主要問題。我也想爲Point[]
,Point[][]
等等這樣做。
我需要爲Point的每個維度寫一個反序列化器嗎?還是有更好的方法來實現?
請幫忙。
能否請您給一些 有關如何做的細節? – Rishi