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
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import io.legado.app.data.entities.BookChapter
@Dao
interface BookChapterDao {

@ -69,7 +69,7 @@ data class Book(
variableMap = if (isEmpty(variable)) {
HashMap()
} 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.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 <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 {
with(JsonParser().parse(json).asJsonArray) {
val result = ArrayList<T>()
for (obj in this) {
attempt { fromJson(obj, T::class.java) }.value?.run { result.add(this) }
}
result
}
val result: T? = fromJson(json, genericType<T>())
result
}.value
}
inline fun <reified T> Gson.fromJsonArray(json: String?): List<T>? {
return attempt {
val result: List<T>? = fromJson(json, genericType<List<T>>())
result
}.value
}
Loading…
Cancel
Save