Gson基于字段名称的自定义反序列化逻辑 [英] Gson custom deserializing logic based on field name
本文介绍了Gson基于字段名称的自定义反序列化逻辑的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
class Foo {
public String duration;
public String height;
}
我的json数据看起来像
{duration:12200000,height:162}
现在我想通过反序列化它
$ b $ pre $ f $ f $ foo = gson.fromJson(jsonStr,让Foo.class);
因此,
foo.duration是20分钟(分钟数),
foo.height是162cm
这是可以使用Gson吗?
谢谢!
解决方案
GSON允许创建自定义的反序列化器/序列化器。请尝试阅读此处。
抱歉,没有举例。
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;
//应该是一个合适的构造函数
return new Foo(a,b);
$ / code>
然后:
Gson gson = new GsonBuilder()。registerTypeAdapter(Foo.class,foo.new FooDeserializer())。create();
,您应该收到您希望使用 fromJson(。 ..)
。
My class is like:
class Foo {
public String duration;
public String height;
}
And my json data looks like
{"duration":"12200000", "height":"162"}
Now I want to deserialize it by
Foo foo = gson.fromJson(jsonStr, Foo.class);
So that, foo.duration is "20 mins" (number of minutes), foo.height is "162cm"
Is this possible to do using Gson?
Thanks!
解决方案
GSON allows creation of custom deserializers/serializers. Try to read here.
Sorry for without an example.
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);
}
}
then:
Gson gson = new GsonBuilder().registerTypeAdapter(Foo.class, foo.new FooDeserializer()).create();
and you should receive result as you wish it to get using fromJson(...)
.
这篇关于Gson基于字段名称的自定义反序列化逻辑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文