【发布时间】:2014-12-05 06:25:36
【问题描述】:
我正在尝试实现反序列化以将 json 对象解析为字符串,但没有调用我的自定义可反序列化类。
需要解析的JSON
{
"status": true,
"student": [
{
"id": 1,
"name": "",
"age": "",
"title": "",
}
]
}
我的反序列化类
public class MyDeserializer implements JsonDeserializer<StudentData> {
@Override
public StudentData deserialize(JsonElement je, Type type, JsonDeserializationContext jdc) {
try {
String content = je.getAsJsonObject().get("student").getAsString();
return new Gson().fromJson(content, StudentData)
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
注册我的反序列化器:-
MyDeserializer myDeserializer = new MyDeserializer();
Gson gson = new GsonBuilder().registerTypeAdapter(NotificationResponse.class, myDeserializer).create();
mRestAdapter = new RestAdapter.Builder().setServer(baseUrl).setConverter(new GsonConverter(gson)).setLogLevel(RestAdapter.LogLevel.FULL).setRequestInterceptor(new RequestInterceptor()
{
@Override
public void intercept(RequestFacade requestFacade) {
}
}).build();
【问题讨论】:
-
我的问题是自定义反序列化器没有被调用。
-
要正确实现,您应该使用您创建的相同“gson”对象来调用“fromGson()”函数?否则每次都像 new Gson() 一样初始化它不会调用你的 Desiralizer 类