我有一个对象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