オブジェクトを含む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については何も言いませんが、それはデバッグにここに例外をスローしない)買ってあげるエラーできるだけ速くに!
おかげ
と同じクラスを使用する必要があります
代わりに、例外を生成します
Timesheet
を意味しているのであなたはそれが動作しないと思いますか? – Savior@Pillar申し訳ありませんが、私は完全に私が得るエラーメッセージを忘れてしまった! –
これはJSONまたはGsonとは関係ありません。あなたの応答ストリームは閉じられています。 – Savior