2014-12-05 83 views
0

我想实现反序列化来解析json对象作为字符串,但我的自定义反序列化类没有被调用。反序列化JSON对象字符串Android

JSON这需要分析

​​

我Deserializable类

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(); 
+0

检查:http://stackoverflow.com/questions/26814673/android-jsonarray-to-arraylist/26814776#26814776 – 2014-12-05 06:31:53

+0

我的问题是,自定义解串器不会被调用。 – swati 2014-12-05 06:34:08

+0

要正确实现你应该使用你创建的相同的“gson”对象来调用“fromGson()”函数?否则,每次像新的Gson()都不会调用你的Desiralizer类时就会初始化它 – 2014-12-05 07:07:46

回答

0

我认为this教程将帮助您实现解串器(并可能会引入一些新的概念)

尝试一下,看看它是否适合你!

0

对于简单的事情,我不认为增加Gson作为依赖是值得的。

例子:

JSONObject jObj = new JSONObject(theJsonYouPostedAbove); 
boolean status = jObj.getBoolean("status"); 
JSONArray jArr = jObj.getJSONArray("student"); 
for (int i = 0; i < jArr.length(); i++) { 
    JSONObject jo = jArr.getJSONObject(i); 
    int id = jo.getInt("id"); 
    String name = jo.getString("name"); 
    ... 
} 
相关问题