我的班级就像:
class Foo {
public String duration;
public String height;
}
我的json数据看起来像
{"duration":"12200000", "height":"162"}
现在我想通过
反序列化它 Foo foo = gson.fromJson(jsonStr, Foo.class);
那样, foo.duration是“20分钟”(分钟数), foo.height是“162cm”
使用Gson可以吗?
谢谢!
答案 0 :(得分:6)
GSON允许创建自定义反序列化器/序列化器。请尝试阅读here。
很抱歉没有例子。
class FooDeserializer implements JsonDeserializer<Foo>{
@Override
public Foo deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
JsonObject jo = (JsonObject)json;
String a = jo.get("duration").getAsString()+" mins";
String b = jo.get("height").getAsString() + " cm";
//Should be an appropriate constructor
return new Foo(a,b);
}
}
然后:
Gson gson = new GsonBuilder().registerTypeAdapter(Foo.class, foo.new FooDeserializer()).create();
并且您应该收到结果,因为您希望它使用fromJson(...)
。