Gson基于字段名称自定义反序列化逻辑

时间:2011-11-17 10:13:39

标签: android gson

我的班级就像:

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可以吗?

谢谢!

1 个答案:

答案 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(...)