pull/32/head
Administrator 6 years ago
parent f7b5407786
commit fd72b85815
  1. 2
      app/src/main/java/io/legado/app/data/dao/BookChapterDao.kt
  2. 2
      app/src/main/java/io/legado/app/data/entities/Book.kt
  3. 21
      app/src/main/java/io/legado/app/utils/GsonExtensions.kt

@ -1,9 +1,11 @@
package io.legado.app.data.dao package io.legado.app.data.dao
import androidx.room.Dao
import androidx.room.Insert import androidx.room.Insert
import androidx.room.OnConflictStrategy import androidx.room.OnConflictStrategy
import io.legado.app.data.entities.BookChapter import io.legado.app.data.entities.BookChapter
@Dao
interface BookChapterDao { interface BookChapterDao {

@ -69,7 +69,7 @@ data class Book(
variableMap = if (isEmpty(variable)) { variableMap = if (isEmpty(variable)) {
HashMap() HashMap()
} else { } else {
GSON.fromJsonObject<HashMap<String, String>>(variable!!) GSON.fromJsonObject<HashMap<String, String>>(variable)
} }
} }
} }

@ -3,20 +3,23 @@ package io.legado.app.utils
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.GsonBuilder import com.google.gson.GsonBuilder
import com.google.gson.JsonParser import com.google.gson.JsonParser
import com.google.gson.reflect.TypeToken
import org.jetbrains.anko.attempt import org.jetbrains.anko.attempt
val GSON: Gson by lazy { GsonBuilder().create() } val GSON: Gson by lazy { GsonBuilder().create() }
inline fun <reified T> Gson.fromJsonObject(json: String?): T? = fromJson(json, T::class.java) inline fun <reified T> genericType() = object : TypeToken<T>() {}.type
inline fun <reified T> Gson.fromJsonArray(json: String): ArrayList<T>? { inline fun <reified T> Gson.fromJsonObject(json: String?): T? {//可转成任意类型
return attempt { return attempt {
with(JsonParser().parse(json).asJsonArray) { val result: T? = fromJson(json, genericType<T>())
val result = ArrayList<T>() result
for (obj in this) { }.value
attempt { fromJson(obj, T::class.java) }.value?.run { result.add(this) } }
}
result inline fun <reified T> Gson.fromJsonArray(json: String?): List<T>? {
} return attempt {
val result: List<T>? = fromJson(json, genericType<List<T>>())
result
}.value }.value
} }
Loading…
Cancel
Save