From fd72b858155ad8b87087e333dec60997072c42be Mon Sep 17 00:00:00 2001 From: Administrator <1760316362@qq.com> Date: Thu, 4 Jul 2019 11:39:13 +0800 Subject: [PATCH] update --- .../io/legado/app/data/dao/BookChapterDao.kt | 2 ++ .../java/io/legado/app/data/entities/Book.kt | 2 +- .../io/legado/app/utils/GsonExtensions.kt | 21 +++++++++++-------- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/dao/BookChapterDao.kt b/app/src/main/java/io/legado/app/data/dao/BookChapterDao.kt index ad45e6290..9cfe22e8d 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookChapterDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookChapterDao.kt @@ -1,9 +1,11 @@ package io.legado.app.data.dao +import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import io.legado.app.data.entities.BookChapter +@Dao interface BookChapterDao { diff --git a/app/src/main/java/io/legado/app/data/entities/Book.kt b/app/src/main/java/io/legado/app/data/entities/Book.kt index cf7ded306..315ddf6a5 100644 --- a/app/src/main/java/io/legado/app/data/entities/Book.kt +++ b/app/src/main/java/io/legado/app/data/entities/Book.kt @@ -69,7 +69,7 @@ data class Book( variableMap = if (isEmpty(variable)) { HashMap() } else { - GSON.fromJsonObject>(variable!!) + GSON.fromJsonObject>(variable) } } } diff --git a/app/src/main/java/io/legado/app/utils/GsonExtensions.kt b/app/src/main/java/io/legado/app/utils/GsonExtensions.kt index 593979856..bccf6e6ba 100644 --- a/app/src/main/java/io/legado/app/utils/GsonExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/GsonExtensions.kt @@ -3,20 +3,23 @@ package io.legado.app.utils import com.google.gson.Gson import com.google.gson.GsonBuilder import com.google.gson.JsonParser +import com.google.gson.reflect.TypeToken import org.jetbrains.anko.attempt val GSON: Gson by lazy { GsonBuilder().create() } -inline fun Gson.fromJsonObject(json: String?): T? = fromJson(json, T::class.java) +inline fun genericType() = object : TypeToken() {}.type -inline fun Gson.fromJsonArray(json: String): ArrayList? { +inline fun Gson.fromJsonObject(json: String?): T? {//可转成任意类型 return attempt { - with(JsonParser().parse(json).asJsonArray) { - val result = ArrayList() - for (obj in this) { - attempt { fromJson(obj, T::class.java) }.value?.run { result.add(this) } - } - result - } + val result: T? = fromJson(json, genericType()) + result + }.value +} + +inline fun Gson.fromJsonArray(json: String?): List? { + return attempt { + val result: List? = fromJson(json, genericType>()) + result }.value } \ No newline at end of file