IllegalStateException(“ JsonReader已关闭”)

时间:2019-09-13 09:08:50

标签: android kotlin moshi

此代码不会抛出:

override fun fromJson(reader: JsonReader): List<MyObj> {
        val result = ArrayList<MyObj>()
        reader.beginObject()
        while (reader.hasNext()) {
            result.add(MyObj(reader.nextName(), reader.nextString()))
        }
        reader.endObject()
        return result
}

但是,如果我在返回前添加reader.close,或使用reader.use { },它将在这里被捕获:

private fun <T> networkTransform(): SingleTransformer<Response<T>, Response<T>> {
        return SingleTransformer {
            it.onErrorResumeNext { throwable -> ...}
            ...

所以我的问题是,我们需要处理close()吗?

1 个答案:

答案 0 :(得分:2)

您不应该在JsonAdapter本身中关闭阅读器,只有调用代码(即创建阅读器并从fromJson()调用的人)才需要处理它。