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