2012-01-19 35 views
0

我想反序列化这个使用GSON进入Post列表,但不知道如何告诉GSON如何忽略根元素“posts”(就像它的一个对象)并只处理该数组。GSON反序列化尽管JSON源是对象

我有:

Type postTypeList = new TypeToken<List<Post>>(){}.getType(); 

JsonParser jsonParser = new JsonParser(); 
JsonElement jsonElement = jsonParser.parse(myJSONString); 
JsonObject postsRootObj = jsonElement.getAsJsonObject(); 

List<Post> postList = gson.fromJson(postsRootObj.get("posts"), postTypeList); 

但..我宁愿没有整个JsonParser,我宁愿只是它直接传递到gson.fromJson功能。是有办法做这个?

{ "posts": 
    [  

     { 
     "username": "John", 
     "message": "I'm back", 
     "time": "2010-5-6 7:00:34" 
     "validator":[{ 
         "prog": "Name1", 
         "name": "Name2", 
         "computername": "Name3", 
         "date": "2010-11-20 19:39:55" 
         }] 
     } 
     , 

     { 
      "username": "Smith", 
      "message": "I've been waiting", 
      "time": "2010-4-6 10:30:26" 
      "validator":[{ 
         "prog": "Name1", 
         "name": "Name2", 
         "computername": "Name3", 
         "date": "2010-11-20 19:39:55" 
         }] 

     } 
]} 

回答

1

创建一个包装类这将有List<Post>作为其成员

public class PostList{ 
private List<Post> posts; 
// getter and setters for posts 
} 

然后用fromJson在类似的方式

List<Post> postList = gson.fromJson(myJSONString,PostList.class); 
+0

这是另一种方法我想到了,但在我看来,它的不必要的课,我只是希望事情可能已经建成GSON以帮助我的问题。 –

+0

哦,好吧!嗯..我只能想到这一点,你写的方法..如果我错了,请纠正我,但我不认为会有什么办法强迫'Gson'完全忽略根元素。 – Nikhil

+0

There是一个修正。 – vinzzz

0

有一种校正从上方。使用方法应该是:

PostList postList = gson.fromJson(myJSONString,PostList.class); 
Post post = postlist.get(index) //index is the index of list you want to access