2016-04-09 47 views
0

在這裏苦苦掙扎,將包含對象 的JSON字符串轉換爲使用GSON的對象。Java - 使用Gso將Json字符串轉換爲對象

JSON數組

[ 
{"_id":"11111", 
    "_owner":"2222", 
    "name":"S32B - TankFever", 
    "__v":0, 
    "slots":[], 
    "members": 
    [ 
    {"_email":"[email protected]", 
    "key":"XXX", 
    "_id":"33333", 
    "accepted":false 
    }, 
    {"_email":"[email protected]", 
    "key":"XXX", 
    "_id":"44444", 
    "accepted":false} 
    ] 
}, and some more. 
] 

數組包含對象我稱爲 '的TimeSheet'。每個時間表都包含一個名爲'Slot'和'Member'的對象數組。

的類

時間表

private String _owner; 
private String name; 
private Slot[] slots; 
private Member[] members; 

會員

private String _email; 
private String key; 
private boolean accepted; 

插槽(仍是空的),我想

守則,應該工作:

String jsonString = response.body().string(); 
Type type = new TypeToken<List<Timesheet>>(){}.getType(); 
List<Timesheet> inpList = new Gson().fromJson(jsonString, type); 

for (int i=0;i<inpList.size();i++) { 
    Timesheet x = inpList.get(i); 
    System.out.println(x); 
} 

的錯誤我會得到(這並不是說有關GSON什麼,但它確實在這裏拋出一個異常調試)

04-09 23:13:17.242 1594-1594/com.example.jim.app I/System.out: java.lang.IllegalStateException: closed 
04-09 23:13:17.242 1594-1594/com.example.jim.app I/System.out:  at okhttp3.internal.http.Http1xStream$FixedLengthSource.read(Http1xStream.java:378) 
04-09 23:13:17.242 1594-1594/com.example.jim.app I/System.out:  at okio.Buffer.writeAll(Buffer.java:956) 
04-09 23:13:17.243 1594-1594/com.example.jim.app I/System.out:  at okio.RealBufferedSource.readByteArray(RealBufferedSource.java:92) 
04-09 23:13:17.243 1594-1594/com.example.jim.app I/System.out:  at okhttp3.ResponseBody.bytes(ResponseBody.java:83) 
04-09 23:13:17.243 1594-1594/com.example.jim.app I/System.out:  at okhttp3.ResponseBody.string(ResponseBody.java:109) 
04-09 23:13:17.243 1594-1594/com.example.jim.app I/System.out:  at com.example.jim.app.model.User.getOwnedTimesheets(User.java:169) 
04-09 23:13:17.243 1594-1594/com.example.jim.app I/System.out:  at com.example.jim.app.fragment.TimesheetsFragment.initializeTimesheetsListView(TimesheetsFragment.java:91) 
04-09 23:13:17.243 1594-1594/com.example.jim.app I/System.out:  at com.example.jim.app.fragment.TimesheetsFragment.onCreateView(TimesheetsFragment.java:73) 

如果需要一些額外的信息,我會更新這個問題儘快!

感謝

+0

是什麼讓你認爲它不起作用? – Savior

+0

@Pillar對不起,我完全忘了我會得到的錯誤信息! –

+1

這與JSON或Gson無關。您的回覆信息流已關閉。 – Savior

回答

0

由於對象Type typeTimesheet 那麼這個聲明會產生異常

List<Timesheet2> inpList = new Gson().fromJson(jsonString, type); 

,而不是你應該使用相同的類作爲type

List<Timesheet> inpList = new Gson().fromJson(jsonString, type); 
+0

感謝您與我一起在這裏觀看。我確實使用了正確的類,但是發佈了錯誤的代碼..我改變了我的帖子。 –

+0

它會產生異常'java.lang.IllegalStateException:closed'? – Savior

+0

你的答案完全錯過了觀點。 – Savior

相關問題