2016-04-09 14 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. 
] 

配列は、私が 'タイムシート' と呼ばれるオブジェクトが含まれています。各タイムシートには、「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); 
} 

私はいくつかの追加情報が必要な場合、私はこの質問を更新します

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) 

(それはGsonについては何も言いませんが、それはデバッグにここに例外をスローしない)買ってあげるエラーできるだけ速くに!

おかげ

+0

と同じクラスを使用する必要があります

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

代わりに、例外を生成しますTimesheet を意味しているのであなたはそれが動作しないと思いますか? – Savior

+0

@Pillar申し訳ありませんが、私は完全に私が得るエラーメッセージを忘れてしまった! –

+1

これはJSONまたはGsonとは関係ありません。あなたの応答ストリームは閉じられています。 – Savior

答えて

0

オブジェクトType typeは、この文は何が作るtypeすなわち

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

私と一緒に見てくれてありがとう。私は正しいクラスを使いましたが、間違ったコードを投稿しました。私は自分の投稿を変更しました。 –

+0

例外 'java.lang.IllegalStateException:closed'が生成されますか? – Savior

+0

あなたの答えは完全にポイントを逃しています。 – Savior

関連する問題