优化
This commit is contained in:
@@ -3,9 +3,6 @@ package io.legado.app.data.entities
|
||||
import android.os.Parcelable
|
||||
import android.text.TextUtils
|
||||
import androidx.room.*
|
||||
import com.google.gson.JsonDeserializationContext
|
||||
import com.google.gson.JsonDeserializer
|
||||
import com.google.gson.JsonElement
|
||||
import io.legado.app.constant.AppPattern
|
||||
import io.legado.app.constant.BookSourceType
|
||||
import io.legado.app.data.entities.rule.*
|
||||
@@ -15,7 +12,6 @@ import io.legado.app.utils.fromJsonObject
|
||||
import io.legado.app.utils.splitNotBlank
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import java.io.InputStream
|
||||
import java.lang.reflect.Type
|
||||
|
||||
@Suppress("unused")
|
||||
@Parcelize
|
||||
@@ -228,7 +224,6 @@ data class BookSource(
|
||||
|
||||
private val gson by lazy {
|
||||
GSON.newBuilder()
|
||||
.registerTypeAdapter(String::class.java, StringJsonDeserializer())
|
||||
.registerTypeAdapter(ExploreRule::class.java, ExploreRule.jsonDeserializer)
|
||||
.registerTypeAdapter(SearchRule::class.java, SearchRule.jsonDeserializer)
|
||||
.registerTypeAdapter(BookInfoRule::class.java, BookInfoRule.jsonDeserializer)
|
||||
@@ -250,22 +245,6 @@ data class BookSource(
|
||||
return gson.fromJsonArray(inputStream)
|
||||
}
|
||||
|
||||
class StringJsonDeserializer : JsonDeserializer<String?> {
|
||||
|
||||
override fun deserialize(
|
||||
json: JsonElement,
|
||||
typeOfT: Type,
|
||||
context: JsonDeserializationContext?
|
||||
): String? {
|
||||
return when {
|
||||
json.isJsonPrimitive -> json.asString
|
||||
json.isJsonNull -> null
|
||||
else -> json.toString()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class Converters {
|
||||
|
||||
@@ -3,13 +3,9 @@ package io.legado.app.data.entities
|
||||
import android.os.Parcelable
|
||||
import android.text.TextUtils
|
||||
import androidx.room.*
|
||||
import com.google.gson.JsonDeserializationContext
|
||||
import com.google.gson.JsonDeserializer
|
||||
import com.google.gson.JsonElement
|
||||
import io.legado.app.constant.AppPattern
|
||||
import io.legado.app.utils.*
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import java.lang.reflect.Type
|
||||
|
||||
@Parcelize
|
||||
@Entity(tableName = "rssSources", indices = [(Index(value = ["sourceUrl"], unique = false))])
|
||||
@@ -174,34 +170,13 @@ data class RssSource(
|
||||
|
||||
@Suppress("MemberVisibilityCanBePrivate")
|
||||
companion object {
|
||||
private val gson by lazy {
|
||||
GSON.newBuilder()
|
||||
.registerTypeAdapter(String::class.java, StringJsonDeserializer())
|
||||
.create()
|
||||
}
|
||||
|
||||
fun fromJson(json: String): Result<RssSource> {
|
||||
return gson.fromJsonObject(json)
|
||||
return GSON.fromJsonObject(json)
|
||||
}
|
||||
|
||||
fun fromJsonArray(jsonArray: String): Result<List<RssSource>> {
|
||||
return gson.fromJsonArray(jsonArray)
|
||||
}
|
||||
|
||||
class StringJsonDeserializer : JsonDeserializer<String?> {
|
||||
|
||||
override fun deserialize(
|
||||
json: JsonElement,
|
||||
typeOfT: Type?,
|
||||
context: JsonDeserializationContext?
|
||||
): String? {
|
||||
return when {
|
||||
json.isJsonPrimitive -> json.asString
|
||||
json.isJsonNull -> null
|
||||
else -> json.toString()
|
||||
}
|
||||
}
|
||||
|
||||
return GSON.fromJsonArray(jsonArray)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ val GSON: Gson by lazy {
|
||||
MapDeserializerDoubleAsIntFix()
|
||||
)
|
||||
.registerTypeAdapter(Int::class.java, IntJsonDeserializer())
|
||||
.registerTypeAdapter(String::class.java, StringJsonDeserializer())
|
||||
.disableHtmlEscaping()
|
||||
.setPrettyPrinting()
|
||||
.create()
|
||||
@@ -90,6 +91,25 @@ class ParameterizedTypeImpl(private val clazz: Class<*>) : ParameterizedType {
|
||||
override fun getActualTypeArguments(): Array<Type> = arrayOf(clazz)
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class StringJsonDeserializer : JsonDeserializer<String?> {
|
||||
|
||||
override fun deserialize(
|
||||
json: JsonElement,
|
||||
typeOfT: Type,
|
||||
context: JsonDeserializationContext?
|
||||
): String? {
|
||||
return when {
|
||||
json.isJsonPrimitive -> json.asString
|
||||
json.isJsonNull -> null
|
||||
else -> json.toString()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* int类型转化失败时跳过
|
||||
*/
|
||||
@@ -115,7 +135,6 @@ class IntJsonDeserializer : JsonDeserializer<Int?> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修复Int变为Double的问题
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user